分支管理大纲:

分支就相当于是工厂里的流水线,分支之间是互相不会影响的。

掌握Git工作流(二)--git分支管理_git

​​掌握Git工作流(一)--git基本操作​​

​​掌握Git工作流(二)--git分支管理​​

​​掌握Git工作流(三)--git工作流​​

一. git 分支基本操作

掌握Git工作流(二)--git分支管理_git分支管理_02

也可以理解为两条流水线;


掌握Git工作流(二)--git分支管理_git分支管理_03

 

 


掌握Git工作流(二)--git分支管理_基本操作_04

HEAD是指向当前分支,分支才指向当前的版本。 

掌握Git工作流(二)--git分支管理_基本操作_05




掌握Git工作流(二)--git分支管理_基本操作_06


掌握Git工作流(二)--git分支管理_Git_07


掌握Git工作流(二)--git分支管理_git_08


掌握Git工作流(二)--git分支管理_git_09


掌握Git工作流(二)--git分支管理_分支管理_10


掌握Git工作流(二)--git分支管理_git_11


掌握Git工作流(二)--git分支管理_分支管理_12

创建并切换分支的过程如下:

创建分支是创建一个dev的指针指向节点,切换分支就是用HEAD来指向dev分支。

掌握Git工作流(二)--git分支管理_分支管理_13





掌握Git工作流(二)--git分支管理_Git_14

master还在原来的位置



掌握Git工作流(二)--git分支管理_git_15

git checkout master相当于是直接让HEAD指向了master分支;


掌握Git工作流(二)--git分支管理_git分支管理_16

合并相当于是对HEAD以及master直接进行操作,使它们移动到dev的分支上;


快速合并就是把指针直接挪动到当前的版本节点。

掌握Git工作流(二)--git分支管理_基本操作_17




掌握Git工作流(二)--git分支管理_git分支管理_18


掌握Git工作流(二)--git分支管理_Git_19



二. git 分支解决冲突

有些时候,合并分支并不是总是成功的。




现在的图是这种情况:



掌握Git工作流(二)--git分支管理_基本操作_20


掌握Git工作流(二)--git分支管理_分支管理_21




掌握Git工作流(二)--git分支管理_基本操作_22


掌握Git工作流(二)--git分支管理_Git_23


掌握Git工作流(二)--git分支管理_Git_24


掌握Git工作流(二)--git分支管理_git_25

在两个分支上都有了新的提交,并且编辑的都是同一个文件,在合并时就会起冲突,冲突必须手动的进行解决,并进行一次新的提交



掌握Git工作流(二)--git分支管理_Git_26


掌握Git工作流(二)--git分支管理_git分支管理_27


掌握Git工作流(二)--git分支管理_git分支管理_28


掌握Git工作流(二)--git分支管理_基本操作_29


掌握Git工作流(二)--git分支管理_基本操作_30


掌握Git工作流(二)--git分支管理_分支管理_31




掌握Git工作流(二)--git分支管理_git_32

小结:

在合并分支时,可能会起冲突。解决办法就是先通过git status找到冲突是在哪个文件中,接着手动解决完冲突的文件后,再次提交即可。



三.git分支分支管理策略

掌握Git工作流(二)--git分支管理_分支管理_33


掌握Git工作流(二)--git分支管理_Git_34


掌握Git工作流(二)--git分支管理_Git_35


掌握Git工作流(二)--git分支管理_分支管理_36

注:此时合并dev得内容到master不会产生冲突。当两个分支都有各自得提交,并且编辑同一个文件时才会有冲突。但是此时不会起冲突,但是不能快速提交。当快速合并不能成且没有冲突得时候,此时会在合并之后做一次新的提交。

上述过程如图所示:

掌握Git工作流(二)--git分支管理_Git_37

会出现一个弹窗得信息:

掌握Git工作流(二)--git分支管理_基本操作_38

输入合并信息:

掌握Git工作流(二)--git分支管理_基本操作_39

通过Ctrl + X 保存并退出

掌握Git工作流(二)--git分支管理_基本操作_40

此时效果如图:

掌握Git工作流(二)--git分支管理_Git_41


掌握Git工作流(二)--git分支管理_分支管理_42


掌握Git工作流(二)--git分支管理_git分支管理_43


掌握Git工作流(二)--git分支管理_基本操作_44

创建并切换到dev分支如图所示,将HEAD移过来,指向dev分支:

掌握Git工作流(二)--git分支管理_git_45


掌握Git工作流(二)--git分支管理_基本操作_46

对应如图所示:




将HEAD重新移动到master上面:


现在如果直接使用git merge dev的话,其会执行快速合并,因为dev分支上有提交记录,master分支上还没有。

但是有时我们为了保存提交的记录,我们需要手动的禁止快速合并。

掌握Git工作流(二)--git分支管理_分支管理_47

禁止快速合并之后,它就会合并后重新做一次新的提交,那么新提交需要有一个说明信息,就在-m后面加上说明信息。

对应的图如下,将之前的master更新往上移动:


问:快速合并和禁止快速合并的模式有什么不同?

快速合并在git log 中不显示合并的记录。

掌握Git工作流(二)--git分支管理_Git_48

那么什么时候我们会禁止快速合并模式呢?

掌握Git工作流(二)--git分支管理_git_49



因为此时你手上的工作还没有完成,所以不能进行直接提交。




此时再通过git status来看,工作区就变干净了。

掌握Git工作流(二)--git分支管理_基本操作_50


掌握Git工作流(二)--git分支管理_分支管理_51




掌握Git工作流(二)--git分支管理_分支管理_52


掌握Git工作流(二)--git分支管理_Git_53


掌握Git工作流(二)--git分支管理_Git_54


掌握Git工作流(二)--git分支管理_Git_55


掌握Git工作流(二)--git分支管理_Git_56