Git分支(5/5) -- 解决合并的冲突

Posted cgzl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git分支(5/5) -- 解决合并的冲突相关的知识,希望对你有一定的参考价值。

技术分享图片

如果两个分支上都对同一个文件进行了修改, 那么就有可能发生冲突.

 

首先创建一个分支, 并切换到该分支上:

技术分享图片

然后修改index.html, 修改几个地方吧.

然后查看状态, 并commit:

技术分享图片

然后切换到master, 并编辑同一个文件:

技术分享图片

而这时index.html并不是realwork分支修改后的样子, 而是修改之前的样子:

技术分享图片

然后修改index.html, 修改几处可能引起冲突的地方.

commit:

技术分享图片

然后查看log:

技术分享图片

接下来最应该做的就是diff:

技术分享图片

也可以使用可视化工具进行diff:

技术分享图片

下面进行合并:

技术分享图片

不出所料, 冲突发生了, 自动合并失败.

现在的状态, 应该叫做Merging状态.

现在打开index.html是这样的:

技术分享图片

可以看到两处冲突, 每处都有HEAD(master)版的和realwork分支版的.

上图我使用的是Visual Studio Code, 可以点击上面的按钮来进行冲突的解决, 也可以手动修改文件进行解决.

但是在这里我使用我配置好的mergetool:

git mergetool. 这个命令将会打开p4merge(我本机配置的mergetool):

技术分享图片

按图示操作, 点击图标选择不同的版本, 最后点击保存即可.

关闭p4merge:

技术分享图片

然后commit:

技术分享图片

commit之后, 状态就不再是merging了, 但是会出现一个未被追踪的文件:

技术分享图片

这是因为在解决冲突的时候, git会保存一个带有触痛的原始版本, 以备不时之需:

技术分享图片

但是.orig文件是不应该被追踪的, 所以需要添加到.gitignore文件中:

技术分享图片

然后查看状态:

技术分享图片

这次只有.gitignore发生了变化.

commit:

技术分享图片

最后可以删除 realwork 分支了:

技术分享图片

查看log:

技术分享图片

Ok.

 

以上是关于Git分支(5/5) -- 解决合并的冲突的主要内容,如果未能解决你的问题,请参考以下文章

Git 分支的创建、切换、合并以及解决冲突、删除

5-具体学习git--分支冲突,merge合并

git分支合并为啥会发生冲突

Git分支合并冲突解决(续)

Git合并分支出现的冲突解决

git 怎么提交合并分支的部分代码