文章目录
一、理解分支

二、创建分支
查看已存在分支
git branch

之前我们讲过,HEAD 指向 master 分支,其实 HEAD 不仅可以指向 master 分支,还可以指向其他的分支,被 HEAD 指向的分支就是工作的分支。
创建分支
git branch [分支名字]
切换分支
git checkout [分支名字]
合并分支
git merge [分支名字]
将分支合并到当前所在分支
五、删除分支
这里重点说明:我们只能在其他分支上面删除此分支,也就是说所在分支和删除分支不能是同一个。
// 删除分支语句
git branch -d [分支名称]
以下是一个错误删除分支示范的删除分支,如下图,已切换到 dev 分支,但是进行删除 dev 分支,这显然是不能成功的。
下面进行正确示范,我们切回 master 分支,然后删除 dev 分支,删除成功,只剩下 master 分支。
虽然删除了 dev 分支,但是删除分支所进行的修改并没有被删除。因为创建、合并和删除分支非常快,所以 Git 鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在 master 分支上工作效果是一样的,但过程更安全。
六、合并冲突
假如说 ReadMe 文件原来是 okk,分支 master 对 ReadMe 文件修改是 occ,分支dev1 对 ReadMe 文件修改为 obb,那么此时将两个分支合并,此时合并之后的文件是什么样的,这时会产生分支冲突。

创建 dev1 分支并切换到此分支
修改 ReadMe 文件为 obb,并提交到版本库
切换到分支 master,修改 ReadMe 文件为 occ,并提交到版本库
此时分支管理图为:
此时我们位于 master 分支,删除 dev1 分支,出现合并冲突。
进入 ReadMe 文件查看
可以直接在当前代码里进行修改,可以保留 master 或者 dev1 的代码,然后进行 add --》commit 操作。
此时 master 指向的索引为最新一次的修改,而 dev1 指向的还是原来的修改:

merge 冲突需要手动解决,并进行一次提交操作。
git log --graph --abbrev-commit
此命令会以一种图形化的方式展示提交历史
也可以使用这条命令:
git log --pretty=oneline --graph --abbrev-commit

七、合并模式
八、bug 分支
在实际开发中,假如正在开发已经写了一部分代码,但是此时发现该分支代码有 bug,此时该怎么办呢?
分支 master 和 dev2,此时指向同一个索引,无修改。


此时切换到 dev2 分支,模拟正在开发写代码,修改 ReadMe 文件,此时发现 master 分支有 bug,然后切换到 master 分支进行修改 bug,此时发现,ReadMe 文件在 master 分支里面也被修改了。(这些修改都是位于工作区的修改)
如果在 dev2 分支进行开发修改了工作区不想影响 master 的工作区的话,可以使用以下命令,将工作区的修改写入 stash 中
git stash
查看 git分支会发现 refs 下多出了一个 stash
查看发现工作区没有修改要提交的,dev2 和 master 分支下的 ReadMe 文件也没有被修改。
注意:创建 file4,但是此文件没有被放到 Git 仓库里面,所以不能被追踪,他被修改的内容也不能被放到 stash 里面。
创建一个分支 fix_bug 进行修改 bug,进入 ReadMe 文件修改 bug,提交到仓库,然后切换到 master 分支进行合并。此时 master 分支是修改完 bug 后的分支。
修改完 bug 后我们切换到 dev2 进行开发,我们发现开发的代码不在里面,这是因为在上面被放到了 stash 里面。
git stash list
查看 stash 里面存放了什么,
git stash pop
将 stash 里面的代码放出来,然后我们发现 ReadMe 文件里面的代码已经恢复到我们开发的状态。但是此时里面的 bug 没有被修复。
然后我们继续完成开发,开发完成之后进行提交代码。
但是此时有个问题是,修改了 bug 之后的代码并没有在 dev2 分支上,
如果我们直接在 master 上进行合并的话,那么就有可能发生合并冲突,导致 master 代码出差
所以我们应该先在 dev2 上进行合并,这样子就算发生冲突进行修改也不会影响 master 代码
然后再将 dev2 合并到 master 上
接下来按此方法进行操作,将 master 合并到 dev2,发生合并冲突
进入 ReadMe 文件进行修改冲突,然后 add–commit
然后再切换到 master 分支上,然后将 dev2 分支合并到 master,此次没有合并冲突
最后需要删除不需要的分支。
九、强制删除分支
加入你在新的分支开发一个功能时,但是此时这个功能不需要了,那么这个分支就需要被删除,但是此时传统的删除分支却删不了,这时我们需要进行强制删除。
创建并切换到一个新的分支 dev3,并且在 ReadMe 里面进行开发新功能,并且提交到仓库
此时我们切换到 master 分支进行删除 dev3,但是此时我们使用命令
git branch -D dev3
并没有删除,提示需要使用命令
git branch -D dev3
,尝试删除,查看分支,的确删除了分支 dev3
版权归原作者 frost-cold 所有, 如有侵权,请联系我们删除。