Git基础-git的本地分支操作详解-查看、创建、删除、合并分支、合并冲突、切换拒绝

1.分支的理解与好处

1.1 理解什么是分支

1.当我们初始化一个git仓库时,默认就会创建一个名为 master 的分支,我们习惯上称其为 主分支;
2.加如在开发过程中,有多个任务并行进行或某个版本需要进行bug修复时,就需要以某个提交历史版本为基础,创建一条或多条新的分支,用于进行对应的任务;

仅有一条master主分支的提交历史如图所示:
在这里插入图片描述

有多个分支的提交历史如图所示:
在这里插入图片描述

1.2 理解为什么要用分支

使用分支有如下好处:
1.多任务并行开发时,可以提高开发效率;
2.各个分支在开发过程中相互独立,如果某一个分支开发失败不会对其他分支产生影响。
失败的分支直接删除即可。

2.分支的基本操作命令

2.1 查看分支 【git branch】

git branch : 仅查看分支名称
git branch -v : 查看分支名称+当前版本号+提交备注
【注】:当前所在分支会在分支名称前用绿色的*号标注出来

在这里插入图片描述

2.2 创建分支 *【git branch 新分支名称】

git branch 新分支名 : 以当前分支HEAD 指针指向的版本为基础版本,创建新的分支;
git branch 新分支名 提交版本号 : 以指定的提交版本号为基础版本,创建新的分支;
git branch 新分支名 已存在分支名 : 以指定的 已存在分支的HEAD指针指向的版本为基础版本,创建新的分支。

1.git branch 新分支名
在这里插入图片描述
在这里插入图片描述

2.git branch 新分支名 执行提交版本
在这里插入图片描述

3.git branch 新分支名 旧分支名
在这里插入图片描述

2.3 切换分支 git checkout 目标分支名称

切换分支之前,确保当前分支已经是提交状态。即 工作区、暂存区、版本库三者之间状态一致
当 工作区、暂存区、版本库三者之间的状态不一致时,请参考 第三节 异常处理-切换分支被拒绝 操作步骤。

切换分支的命令为 : git checkout 目标分支的名称
具体的操作如下图所示:
在这里插入图片描述
在这里插入图片描述

2.4 删除分支

1.git branch -d 分支名 : 删除一个已经完成了的分支。

并且当前位置不能在 被删除的分支上。
被删除分支的所有提交都合并到了当前分支上。

2.git branch -D 分支名 : 强制删除一个分支。

当前位置不能在被删除的分支上。
被删除分支 存在独立的提交没有合并到当前分支上来。

0.不可在当前分支上删除当前分支
-d 和 -D 参数都不可以!
在这里插入图片描述

1.1 git branch -d 【被删除分支没有独立提交的时候】
在这里插入图片描述

1.2 git branch -d 【被删除分支有自己的独立提交没有合并的时候】
在这里插入图片描述
在这里插入图片描述

2.1 git branch -D
在这里插入图片描述

2.5 合并分支 git merge(*)

情景:某一个分支上的功能开发完成或bug修改完成,需要合并到主分支上来,合并完成之后,主分支上就包含了功能分支或bug分支上的内容。
在这里插入图片描述

合并分支的命令是 : git merge 分支名称

具体的操作步骤:
0.预备工作:查看master分支的提交历史和当前文件的状态;
1.创建新的分支 feature-b : git branch feature-b
2.切换到新的分支 feature-b : git checkout feature-b
3.在feature-b分支上进行开发操作,并完成版本的提交;
4.切换到主分支 master 上 : git checkout master
5.合并分支 feature-b : git merge feature-b
6.合并成功后查看日志与文件内容,确认合并成功。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.分支的异常处理-切换分支被拒绝

拒绝时的提示 :error: Your local changes to the following files would be overwritten by checkout: b.txt Please commit your changes or stash them before you switch branches. Aborting

拒绝切换分支产生的情景:**有两个分支,且二者的提交版本已经不同了。**

3.1 模拟切换分支被拒绝的产生

1.确保两个分支的提交历史已经不同;
2.在其中一个分支上进行修改 : 仅修改文件 或 修改文件+提交到暂存区;

【注意】此处修改的文件,须在切换目标分支上也存在,即切换动作会导致二者的冲突时,才会出现切换分支被拒绝的情况。
而 如果是新建一个文件后再切换分支,则不会出现此问题。

3.切换到另一个分支上

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 解决方案一:提交并切换

将当前分支上的修改完成一次提交后再进行切换:
git add . : 将修改添加到暂存区
git commit -m "xxx" : 将暂存区提交到版本库,完成一次提交
git checkout target-branch-name :再次执行切换命令

3.2 解决方案二:放弃修改并强行切换

使用参数 --force 执行强制切换动作,这样做会令这一部分的修改被覆盖。
git checkout --force target-branch-name : 强行切换到目标分支上
在这里插入图片描述

3.3 解决方案三:储藏修改并切换

git stash : 将修改暂存
git stash pop 暂存记录标识 : 将具体的某一次暂存的数据恢复
git stash list : 查看暂存的列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.分支的异常处理-合并冲突

4.1 冲突产生的条件

当不同分支上的同一个文件的同一行发生了不同的修改时,git在合并分支的时候就无法确定哪一个是正确的,此时就会产生合并冲突。

4.2 模拟冲突的产生

1.准备两个分支 master分支feature-c 分支,两个分支初始状态一致;
2.修改 master 分支上的c.txt 文件的第一行,并完成提交;
3.切换到feature-c分支上;
4.修改 feature-c分支上的c.txt文件的第一行,并完成提交;
5.切换到 master分支上,进行合并feature-c分支
此时:冲突出现!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 查看冲突的具体表现

表现一:文本提示冲突,当前状态 变成了 分支名|MERGING,如master|MERGING
如下图中,提示信息明确指出,冲突在 c.txt文件中
在这里插入图片描述

表现二:冲突文件中内容的冲突标志
在冲突存在的文件中,会将双方的修改都展示出来在这里插入图片描述

表现三:查看状态,提示存在两个修改
在这里插入图片描述

4.4 编辑解决冲突

当出现合并冲突的时候,需要我们手动进行合并,并完成一次提交。
此时才算是将冲突解决完成。

在这里插入图片描述

4.5 查看合并的提交历史

在这里插入图片描述

5.分支的特殊操作-恢复被删除的分支

当我们删除一个分支的时候,git只是删除了指向相关提交的指针,该提交的对象仍然在版本库中。
因此,只要我们直到被删除的分支的散列值的信息,就可以恢复被删除的分支。
实质:在某次提交的基础上,创建了一个同名的分支

操作步骤:
1.git reflog 查看散列值的信息;
2.git branch 命令恢复。

在这里插入图片描述
在这里插入图片描述

6.分支的操作补充-创建并同时切换分支

直接使用如下命令即可:

$ git checkout -b 新分支的名字

在这里插入图片描述

7.分支的操作补充-取消合并

在合并分支出现冲突时,往往需要手动进行文件的修改,及文件的合并,在此过程中,如果不慎手动修改出了错,或者直接想取消合并的时候,就可以直接使用下面的命令:

$ git reset --merge

此命令会直接将 git merge 动作取消

8.完成

Congratulations!
You are one step colser to success!

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在IDEA中将本地分支代码合并,你可以按照以下步骤进行操作: 1. 首先,切换到要合并的目标分支,比如主分支(master)或者开发分支(develop)。 2. 在IDEA的菜单栏中选择“VCS” -> “Git” -> “Merge Changes”(或者使用快捷键Ctrl + T)。 3. 在弹出的对话框中,选择要合并的源分支,这是你想要将代码合并到目标分支分支。 4. 如果有冲突发生,IDEA会在编辑器中显示冲突的文件,并提供解决冲突的选项。你可以手动解决冲突并保存文件。 5. 一旦解决了所有的冲突,你可以继续合并操作。点击“Merge”按钮完成合并。 6. 最后,将合并后的代码推送到远程仓库。在IDEA的菜单栏中选择“VCS” -> “Git” -> “Push”(或者使用快捷键Ctrl + Shift + K)。 这样就完成了在IDEA中合并本地分支代码的操作。注意,在整个过程中,需要经常更新代码并解决冲突,确保最终的合并结果是正确的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [idea git 合并分支代码](https://blog.csdn.net/weixin_40482816/article/details/126368958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [IDEA Git 合并分支](https://blog.csdn.net/qq_42217363/article/details/127864720)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [idea+git合并分支解决冲突详解步骤](https://download.csdn.net/download/weixin_38713996/12924591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值