哪些年,我们玩过的Git (8)

在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 dev
2Auto-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.txt
2git 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.txt
2$ git commit -m "sister have finished the part1" paper.txt
3$ git push origin dev

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdfzz.html