Git分支的创建以及分支冲突解决

2,117 阅读3分钟

    在Git中的每次提交,Git都会把它们串成一条时间线,这条时间线就是一个分支,但是到目前为止,我们只有一条分支master分支,也就是我们的主分支,在实际的项目开发过程中,我们并不会在master分支上进行开发,而是会新创建一个分支,然后在这个新创建的分支上开发测试,全部没有问题后,再合并到主分支上。比如我要开发一个项目中的一个功能,我就要新创建一个属于我的分支,这个分支会拷贝主分支的一个完全的副本,我在这个分支上进行的各种操作,不会对其他人的开发造成影响,当我的功能开发测试完成后,就把我的分支合并到master主分支上。     在我们以前看到的,git log中,HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以HEAD指向的就是当前的分支。     使用Git进行团队开发的过程中,Git是鼓励大量使用分支的:     查看分支:git branch,*的意思是当前停留在哪个分支上。

git branch.jpg
    创建分支:git branch <name>,可以看到目前有两个分支,并且停留在master分支上。
git branch <name>.jpg
    切换分支:git checkout <name>,可以看到目前切换到test1分支上。
git checkout.jpg
    创建+切换分支:git checkout -b <name>,可以看到目前切换到test2分支上。
git checkout -b.jpg
    删除分支:git branch -D <name>,但是无法删除当前所在的分支,要是我们需要删除test2分支,需要先切换到其他分支,然后删除。
git branch -D.jpg
    使用git log可以看出,正如我们之前所说的,HEAD指向mastermaster是指向提交的,HEAD指向的就是当前的分支。
git log.jpg
    合并某分支到当前分支:git merge <name>,接下来我们切换到test1分支,并添加一行我在test1分支里做的修改,执行git addgit commit命令,接下来我们切换回master分支,打开test.txt文件,发现,里面并没有内容改动,因为我们之前所做的操作只是在test1分支进行的。
git checkout test1.jpg
    然后我们执行合并命令,再次打开test.txt文件,发现里面已经多了一行我们刚在test1分支下添加的内容。
git merge.jpg
    但是有时候Git无法自动合并分支,比如你和你的同事同事修改了同一行代码,那这个时候就需要你和你的同事认真打一架了,首先必须解决冲突,解决冲突后再提交,合并完成。另外可以使用git log --graph命令看到分支合并图。下面我们分别在master分支添加一行信息111,执行addcommit后,再切换到test1分支下同一行添加信息222,并执行addcommit后,再切换回master分支合并,发现merge冲突。
git merge冲突.jpg
打开test.txt文件后,发现以下信息
test.txt.jpg
    所以我们需要解决冲突,将多余的4行全部删除,改成333并保存。然后提交,发现成功。
解决冲突.jpg