git分支使用手册(Git教学篇5-git必杀技特性)
今天这篇文章我们继续Git教学的第五篇,主要讲解的是git的分支管理,这也号称是git的‘必杀技特性’。
git
分支是什么?git通过保存一系列不同时刻的文件快照来实现数据存储。
每次在进行git提交时,都会生成一个提交对象,这个提交对象都会产生一个指向暂存区内容快照的指针。而且每个提交对象中都会包含一个指向上一次提交(父提交对象)的指针。
通过这一系列指针的指向,就构成了一个分支上的所有提交记录。如下图中,一个分支上的三次提交记录,生成三个版本快照,然后通过指针相连。
HEAD指针
通过git branch命令也可以查看当前处于哪个分支上。如果当前在哪个分支上,则在分支名之前有一个‘*’标识。
git branch
分支的合并在一个上线的项目中,一般至少会有多个用于运行的分支,比如生产环境一般是master分支,开发环境下的dev分支,测试环境下的test分支,还有一系列的个人开发分支self。
分支的合并有merge指令即可完成,merge完成后两个分支记录将处于同一个状态。
比如我们在发现一个线上问题时,需要由master分支新拉一个hotfix分支进行问题的修复,此时的分支情况可能如下如所示。
分支记录
在hotfix分支上修复完问题后,可以切换至master分支,然后将hotfix分支合并至master分支。
合并分支
在分支合并完后,分支情况如下图所示。
合并后的分支
删除本地分支当我们不再需要一个本地分支时,可以通过-d参数来删除它。
有一点需要注意的是,需要先checkout到别的分支才能删除需要删除的分支。
如上一个例子,当hotfix修复完毕后可以将hotfix分支删除。
删除分支
有冲突时的分支合并当多人协同开发时,出现文件冲突是一件很常见的事情。
冲突的原因是同一个文件的同一个部分,在不同的分支中都有修改,这样git就无法自动合并,而是将有冲突的信息暴露出来交由开发人员自己修改后再进行合并。
当我们通过merge命令合并有冲突的分支时,会出现CONFLICT字眼,如下图中的提示信息。
冲突提示
当出现冲突时,是无法merge成功的,后续的操作也将被阻塞住,因此解决冲突是一步必要的操作。
-
冲突文件内容
如果文件冲突后,我们打开冲突的文件,冲突部分的内容会有很明显的<<<<<< ======= >>>>>>> 等标识。
如下图所示就是一个冲突的文件内容。
冲突文件内容
上图中表示的是在HEAD分支和iss53分支的index.html文件冲突,接下来就需要开发人员进行决定,是选用HEAD分支中的内容还是选用iss53分支中的内容,而删掉另一个分支的内容。
-
继续合并
当开发人员将冲突解决后,需要再进行一次git add操作将修改的文件再次添加至暂存区,并且进行一次commit操作。
解决冲突时可以直接通过git commit而不用添加-m选项填写额外的提交信息,默认的提交操作后会出现以下信息。
解决冲突后默认commit信息
当然如果手动填写了-m提交信息,也是可以的,就如同正常的提交操作。
结束语今天这篇文章主要讲解了git branch相关的内容,通过实际的演示提示大家的理解,大家要好好消化。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com