Git的分支管理与标签管理(一)

](http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000)里,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master`,就能确
定当前分支,以及当前分支的提交点:

Git的分支管理与标签管理(一)_第1张图片
image1

每次提交, master分支都会向前移动一步,这样,随着你不断提交, master分支的线也越来越长:
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev
,就表示当前分支在dev上:
Git的分支管理与标签管理(一)_第2张图片
image2

Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

Git的分支管理与标签管理(一)_第3张图片
image3

我们在dev上的工作完成之后,就可以把dev合并到master上:把dev合并到master上。

具体步骤

  1. 创建dev分支,然后切换到dev分支
  2. git branch命令查看当前分支
  3. dev分支上正常提交
  4. dev分支的工作完成,我们就可以切换回master分支

分支总结

查看分支: git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d

解决冲突

** 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。用git log --graph命令可以看到分支合并图。 **

分制管理策略

Git用Fast forward模式时删除分支后,会丢掉分支信息。不使用Fast forward模式,merge后就像这样:

Git的分支管理与标签管理(一)_第4张图片
image4

合并分支时,加上 --no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

bug分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

Feature分支

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

你可能感兴趣的:(Git的分支管理与标签管理(一))