1.了解分支
每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即 master 分⽀;再来理解⼀下HEAD,HEAD 严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD 指向的就是当前分⽀

每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越来越⻓,⽽HEAD只要⼀直指向master分⽀即可指向当前分⽀。
2.分支操作
2.1创建分支
git branch查看当前所有分支,git branch xxx可以创建分支

创建新的分⽀后,Git 新建了⼀个指针叫 dev, * 表⽰当前 HEAD 指向的分⽀是 master 分⽀

⽬前 dev 和 master 指向同⼀个修改

2.2切换分支
使⽤ git checkout 命令即可完成切换

可以发现已经切换到dev分支

2.3合并分支
为了在 master 主分⽀上能看到新的提交,就需要将 dev 分⽀合并到 master 分⽀
git merge 命令⽤于合并指定分⽀到当前分⽀

2.4删除分支
如果当前正处于某分⽀下,就不能删除当前分⽀

切换到其他分支进行删除

3.合并冲突
有这样一个场景,在dev分支下有句代码是123,而在master分支下该部分代码为456,当想将两个分支合并时,会出现冲突

此时我们必须要⼿动调整冲突代码,并需要再次提交修正后的结果!!


使用git log可以查看到分支合并的情况

4.分支管理策略
(1)Fast Forward模式
通常合并分⽀时,如果可能,Git 会采⽤ Fast forward 模式,在这种 Fast forward 模式下,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提交到底是 merge 进来的还是正常提交的。
(2)禁用Fast Forward模式
Git ⽀持我们强制禁⽤ Fast forward 模式,那么就会在 merge 时⽣成⼀个新的 commit ,这样,从分⽀历史上就可以看出分⽀信息。
shell
git merge --no-ff -m "merge with no-ff" dev2
--no-ff 参数,表⽰禁⽤ Fast forward 模式,禁⽤ Fast forward 模式后合并会创建⼀个新的 commit ,所以加上 -m 参数,把描述写进去。
(3)bug分支
git stash
Git 提供了 git stash 命令,可以将当前的⼯作区信息进⾏储藏,被储藏的内容可以在将来某个时间恢复出来。
git stash list
可以查看之前隐藏的工作现场
git stash pop
恢复工作现场,同时删除stash
(4)删除临时分支
使⽤传统的 git branch -d 命令删除分⽀的⽅法是不⾏的,需要使用git branch -D xxx