取消

git 如何更可靠地解决冲突?

使用 git 合并代码时出现冲突是很常见的,不过如何解冲突才能更加可靠呢?不漏掉别人的修改,也同时让自己的修改完全保留。

本文将介绍利用各种工具更可靠地解决冲突。


使用 Visual Studio

如果你使用 Visual Studio,那么当合并两个分支出现冲突的时候,Visual Studio 的 Team Explorer 会显示当前冲突的所有文件。

Visual Studio 中的冲突文件
▲ 图 1

当你点击其中一个文件的 Merge 按钮的时候,会显示这个文件的合并界面。

合并单个文件
▲ 图 2

可以看到,上图中两边的差异非常大。左边的代码进行了某项不为人知的修改,而右边的这些代码都被删除了。如果采用左边,则右边删除移走的代码就会留存,形成两份相似的代码;如果采用右边,那么左边在另一个分支的修改就会丢失。

这时,可以 和基准进行比较 来查看两个分支相对于同样的基准提交的差异来手动解决冲突。

点击合并页面顶部工具栏中的选择比较源按钮,可以切换比较代码的双方。

切换比较代码的双方

你可以比较“源”和“目标”,这也是默认的比较。你还可以选择比较“源”和“基准”、“目标”和“基准”。这样,你可以分别查看两边代码相比于同一个基准提交的修改。

查看源与基准的修改

对于左边的修改,通过查看“源”与“基准”的不同,得知左边其实值修改了一行。那么这时,我们把这一行重新补充到右边删除移走的代码里面(被移到了另一个文件中,需要补充到那个文件中对应的地方),那么两边的修改才真正时等价合并了。

你可以在下图看到这两个不同选项的理解。

git 合并过程

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/resolve-git-conflicts.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

登录 GitHub 账号进行评论