在Git中的每次提交,Git都会把它们串成一条时间线,这条时间线就是一个分支,但是到目前为止,我们只有一条分支master
分支,也就是我们的主分支,在实际的项目开发过程中,我们并不会在master
分支上进行开发,而是会新创建一个分支,然后在这个新创建的分支上开发测试,全部没有问题后,再合并到主分支上。比如我要开发一个项目中的一个功能,我就要新创建一个属于我的分支,这个分支会拷贝主分支的一个完全的副本,我在这个分支上进行的各种操作,不会对其他人的开发造成影响,当我的功能开发测试完成后,就把我的分支合并到master
主分支上。
在我们以前看到的,git log
中,HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以HEAD
指向的就是当前的分支。
使用Git进行团队开发的过程中,Git是鼓励大量使用分支的:
查看分支:git branch
,*的意思是当前停留在哪个分支上。
创建分支:
git branch <name>
,可以看到目前有两个分支,并且停留在master
分支上。切换分支:
git checkout <name>
,可以看到目前切换到test1分支上。创建+切换分支:
git checkout -b <name>
,可以看到目前切换到test2分支上。删除分支:
git branch -D <name>
,但是无法删除当前所在的分支,要是我们需要删除test2分支,需要先切换到其他分支,然后删除。使用
git log
可以看出,正如我们之前所说的,HEAD
指向master
,master
是指向提交的,HEAD
指向的就是当前的分支。合并某分支到当前分支:
git merge <name>
,接下来我们切换到test1分支,并添加一行我在test1分支里做的修改
,执行git add
和git commit
命令,接下来我们切换回master
分支,打开test.txt文件,发现,里面并没有内容改动,因为我们之前所做的操作只是在test1分支进行的。然后我们执行合并命令,再次打开test.txt文件,发现里面已经多了一行我们刚在test1分支下添加的内容。
但是有时候Git无法自动合并分支,比如你和你的同事同事修改了同一行代码,那这个时候就需要你和你的同事认真打一架了,首先必须解决冲突,解决冲突后再提交,合并完成。另外可以使用
git log --graph
命令看到分支合并图。下面我们分别在master分支添加一行信息111
,执行add
和commit
后,再切换到test1分支下同一行添加信息222
,并执行add
和commit
后,再切换回master分支合并,发现merge冲突。打开test.txt文件后,发现以下信息
所以我们需要解决冲突,将多余的4行全部删除,改成333并保存。然后提交,发现成功。