Git使用学习(十四、解决分支合并后产生的冲突)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16777851/article/details/88780768

什么时候会产生合并冲突?

假如说我们目前我们有两个分支master和hot_fix,目前两个分支的内容是一样的。

假设master分支修改了它的工作区的apple.txt文件,并做了提交。而hot_fix分支也修改了它的工作区的apple.txt文件,并做了提交。

这里假设master分支修改的内容和hot_fix分支修改的内容不一样。

这个时候,无论是master分支想要合并hot_fix分支,还是hot_fix分支想要合并master分支,都会合并冲突。

1. 这里我们先在master分支,修改apple.txt文件

修改的内容如下

1. 接下来,我们切换到hot_fix分支,对apple.txt修改

修改内容如下。

这里我们注意的是一个是修改的原来版本的第7行,一个是修改的原来版本的第8行。

这里可以把master合并到hot_fix分支上,也可以把hot_fix分支合并到master分支上。

这里我就把master分支合并到hot_fix分支上

可以看到这个给出的提示,自动合并出现冲突;让我们修改冲突,然后再提交合并。

这个时候,处于合并状态,我们可以看一下

git提示,我们有未完成的合并,需要我修改冲突后,增加并提交这个文件。

而且,因为现在是一个状态(合并)没有执行完毕,是不能进入下一个状态的。可以看到我想要切换到master分支,就失败了。

解决冲突

冲突是因为我们两个不同版本合并时,两个版本都有的文件被修改了。

这个时候就需要两版本的作者,讨论一下,需要怎么做。

我们看一下合并失败的文件。

<<<<<< HEAD,到=======之间的内容就是本分支中最新的版本中和要求合并的分支冲突的地方。

========,到>>>>>>> master之间的内容是master分支要求合并的内容和本分支HEAD指向的本地库之间的冲突。

如何修改这个文件?

  • 首先,肯定是要删除提示信息,这三行。
  • 同时根据两个版本作者讨论的结果,对文件内容进行修改到满意程度。
  • 最后再次提交。

假设我们修改的结果是对这两个修改都进行保留。

提交解决合并冲突

可以看到这里对合并冲突的提交不能有文件名,也就是合并冲突,如果有多个文件有冲突,必须都解决,这次的提交会是所有冲突都解决的提交。

git有log有一个非常有用的命令。可以用来查看,目前这个项目中版本的变化。同时可以以图像化的方式显示出分支创建后的版本迭代,以及最终的合并过程。

注:中间部分由缺失是因为我创建了其它分支,后面又删除了。

猜你喜欢

转载自blog.csdn.net/qq_16777851/article/details/88780768