在master分支下,将dev分支进行合并。
1# 1、在dev分支中对paper.txt文件进行编辑,并提交到版本库2git checkout dev
3git vim paper.txt
4git add paper.txt
5git commit -m "the first operation" paper.txt
6
7# 2、在master分支中对paper.txt文件进行编辑,并提交到版本库
8git checkout master
9git vim paper.txt
10git add paper.txt
11git commit -m "the second operation" paper.txt
12
13# 3、在master分支中,将dev分支合并
14git merge dev
此时,在我们执行merge命令进行分支合并的时候,会出现如下内容:
1$ git merge dev2Auto-merging paper.txt
3CONFLICT (content): Merge conflict in paper.txt
4Automatic merge failed; fix conflicts and then commit the result.
从如上Git给我们提供的信息可以知道,此时已经产生冲突,我们必须手动解决冲突才能再次提交,使用git status paper.txt也能查看产生冲突的信息。我们通过vim打开paper.txt文件可以看见如下内容:
1Oh, my god, I will write my graduate paper.2Come on, Taoye!
3
4I have finished the summary today!
5Some typos have been fixed.
6I'm writing the content of my paper.
7<<<<<<< HEAD
8
9the second operation.
10=======
11
12the first operation.
13>>>>>>> dev
14
对此,我们要想解决冲突,则需要在master主分支中手动编辑该文件,编辑并保存完成之后,在将文件提交到版本库即可:
1vim paper.txt2git add paper.txt
3git commit -m "solve the conflict" paper.txt
4
5# 查看分支的合并情况
6git log --graph --pretty=oneline --abbrev-commit
下面原则来自廖大大的Git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
现在导师给Taoye提出的新需求是:两天内完成论文的初稿并提交。
Taoye大量的时间都花费在开黑中了,两天内完成这个任务对Taoye来说有点困难。于是乎,Taoye想要找妹妹帮忙完成论文的part1部分,而自己完成part2部分。如此一来,两个进程协同进行,也就能完美的实现了导师给的需求。妙哉,妙哉!Taoye心想到这,立马提交自己论文的半成品到远程仓库,然后给妹妹提供一个git链接供其clone。
1# Taoye将本地论文提交到远程仓库2$ git push origin master
1# 妹妹将远程仓库克隆到本地
2$ git clone XXXXXX.git
OK,既然两人的本地都有了论文文件,那么接下来就要开始并行完成各自的任务了,为了避免自己的操作给主分支带来不好的影响,于是在master分支中创建一个dev分支用来编辑文件。由于妹妹的效率比Taoye要快,所以率先完成了论文part1部分的内容,对此,妹妹有如下操作:
1# 妹妹的操作2$ git branch dev
3$ git checkout dev
4$ vim paper.txt
并且在paper.txt添加内容:sister have finished the part1.,part1部分的内容完成之后,将dev分支迅速推送至远程仓库:
1$ git add paper.txt2$ git commit -m "sister have finished the part1" paper.txt
3$ git push origin dev