Git分支是Git最强大的功能之一,它允许开发者在不同的开发线上并行工作而互不干扰。通过合理使用Git分支,可以大大提高团队协作效率和代码质量。
1、查看分支
git branch
2、创建分支
git branch [分支名]
上面图片中,绿色的代表的是当前所在分支,也就是HEAD指针,这里的HEAD指针指向的是master分支。
3、切换分支
git checkout [分支名]
4、创建和切换也可以用一条命令来完成
git checkout -b [分支名]
5、删除分支
git branch -d test
要注意的是不可以在当前分支上把自己删除了,也就是不能在test分支上把test分支删除了,下图箭头指向的错误,需要切换到master分支上删除。
5.1 删除分支有时候需要进行强制删除:例如产品经理让你新增一个功能,你创建了一个新的分支进行开发,当开发到一半的时候,突然通知你不需要这个功能了,那么你当前创建的这个分支也就没有用了,并且这个分支也没有合并到主分支上,这时就不能直接删除,因为默认的情况认为创建的分支是有用的,而你当前的分支并没有进行合并,这时直接删除就认为是有风险的操作,可以使用-D来删除:
git branch -D [分支名]
注意:上面不能删除的前提是在该分支下进行了add和commit操作,没有进行add和commit可以直接删除。
6、分支合并
6.1 合并冲突:
当前有两个分子分别是master和lcl,现在分别在两个分支上对ReadMe文件进行修改,master分支增加hello world;lcl分支上增加hello git。
上面的操作中,最后在进行合并的时候发现CONFLICT,也就是合并冲突,当不同的分支对同一文件的同一行进行不同的修改时,就会出现合并冲突;
其中,“<<<<<<<”和“=======”之间的内容是当前分支冲突的内容,“=======”和“>>>>>>>”之间的内容是lcl分支冲突的内容。
此时我们需要手动解决这个冲突后再add和commit这个结果,然后我们的head指针就会指向这个最新的修改对象,而lcl分支任然指向之前的修改对象。
最后,我们需要删除这个lcl分支,因为它已经完成了它的使命,并且创建分支,删除分支的消耗都是非常小的。
7、合并模式
合并模式有两种,fast-forward模式,简称ff模式;no-fast-forward模式,简称no-ff模式。
我们之前的提交中没有发生冲突的就是ff模式,而发生了冲突的就是no-ff模式。
两者的区别就是在打印日志的时候,ff模式分不清修改的部分是当前这个分支提交的还是merge进来的,所以在发生问题的时候无法追责,而no-ff模式就分得清是当前这个分支提交的还是merge进来的。
所以我们一般都倾向于使用no-ff模式,那么怎么在不发生冲突的时候也使用这种模式呢?
只需要再merge的时候使用以下命令:
git merge [分支名] --no-ff -m "[说明信息]"