1.Git分支的定义
当你开发项目的时候,需要不同的版本,如果不想一直在一个项目里边做修改,这时候就可以使用分支。在不同分支上边 开发可以相互不影响,需要的时候可以切换到不同的分支进行工作。同个小组不同的成员可以在不同的分支针对不同的功能进行开发,需要时进行分支合并即可。
2.Git分支的基本操作
2.1 分支的新建与合并
首先创建一个名为test的分支并切换到该分支:
$ git branch test
$ git checkout test
实现上述要求还有另外一种形式:
$ git checkout -b test
然后,我们可以查看当前所在分支:git branch
,前面带*的为当前所在分支。接下来切换回master分支并将test合并:
$ git checkout master
$ git merge test
最后,两个分支已经合并成功,将test分支删除:
$ git checkout -d test
2.2 遇到冲突时的分支合并
有时候合并操作并不会如此顺利。如果在不同的分支中都修改了同一个文件的同一部分,Git 就无法干净地把两者合到一起(译注:逻辑上说,这种问题只能由人来裁决)。例如:如果你在开发的过程中同时在两个分支修改了同个版本的a文件,将得到类似下面的结果:
$ git merge test
Auto-merging a
CONFLICT (content): Merge conflict in a
Automatic merge failed; fix conflicts and then commit the result.
Git 作了合并,但没有提交,它会停下来等你解决冲突。要看看哪些文件在合并时发生冲突,可以用 git status
查阅:
[master*]$ git status
a: needs merge
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# unmerged: a
#
任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。可以看到此文件包含类似下面这样的部分:
<<<<<<< HEAD:index.html
“在分支test上的修改”
=======
“在分支master上的修改”
>>>>>>> a
接下来,我们只要通过文本编辑器将冲突内容修改,修改完毕后重新提交即可。