Git分支说明
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交,所以,HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!
不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
Git分支实战
1.创建一个分支
创建分支命令:git checkout -b <分支名>
查看分支:git branch
2.修改2次文件,使用dev分支提交Git
我们可以看到master分支还在原地不动,而当前HEAD已经指向了dev分支。说明我们现在正在使用dev分支提交至Git
3.dev分支开发完成,切换回master主分支
切换分支命令:git checkout <分支名>
4.将分支数据与master主分支数据合并(使用merge操作)
分支合并命令:git merge <分支名>
5.merge操作后,再次查看Git 提交日志
6.合并完成之后,我们便可以删除dev分支了
删除分支命令:git branch -d <分支名>
强制删除分支:git branch -D <分支名>(该分支内容未merge时,会提示无法删除,可以使用该命令强制删除)
7.Git鼓励使用分支来进行开发!!!
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
Git分支merge冲突解决
原gitTest.txt文件
①目前我创建一个分支branch01分支
修改后文件为
②切换回master分支,继续修改gitTest.txt文件
修改后文件为
③使用merge命令,开启合并
Git分支会变成如下状态
④我们可以通过vim命令查看文件gitTest.txt,自行进行修改。
1.Git用<<<<<<<,=======
,>>>>>>>
标记出不同分支的内容。merge后如下图
我们可以自行修改,再次提交git add 、git commit提交
2.如果git merge后,发现有冲突,种种原因,我想回退到merge命令之前,即:保持各个分支merge之前的状态
使用命令:git merge --abort 冲突后回退到merge命令之前,保持各分支内容独立状态
⑤至此,冲突解决完成即可再次提交。提交之后,可以根据情况,是否删除分支