60

当 Git 中存在合并冲突时,会在冲突文件中插入如下垃圾。三个问题:

  1. 您如何阅读这些注释?
  2. 修复这些合并冲突时可以使用哪些策略?
  3. 是否有适用于 Mac 的 GUI 工具知道如何读取这些文件并并排显示两个版本以更轻松地解决问题?

在此处输入图像描述

注意:如果相关,我使用的是 GitHub 的 Mac GUI 客户端。

4

5 回答 5

36

<<<<<<和之间的一切======都来自HEAD修订,这是开始合并操作之前的提交状态(git merge如果树脏了会抱怨,所以它应该等同于你的工作目录)。

======和之间的部分>>>>>>来自被合并的版本。之后的文本>>>>>>是引入冲突更改的提交的注释。

存在冲突标记意味着这部分文件的基本版本与两个“新”版本都不同。未显示基本版本(最后一个共同祖先)。

如果你想要一个更舒适的合并并且有一个可用的 GUI,我建议你看看 kdiff3。

于 2012-02-09T08:10:03.847 回答
22
于 2012-12-26T19:19:01.460 回答
17
<<<< HEAD #Where the conflict starts

#Previous Revision

========== # The point where things look iffy

#Things that changed

>>>>> New Commit # Point where the conflict ends

Mac 的 Xcode 带有 FileMerge,可以在命令行中使用opendiff.

git mergetool -t opendiff

于 2012-02-09T08:19:05.083 回答
4

您可以配置(图形)合并工具并使用该工具来解决冲突。

还请查看git mergetool命令 - 如果您安装了预定义工具之一或配置了其他工具,它将打开解决工具http://schacon.github.com/git/git-mergetool。 html

如果您对 GUI 工具感兴趣,则不必担心这些符号的真正含义,因为 GUI 工具将帮助您轻松做出决议。只需了解标有=====>>>>>的部分是冲突部分。

于 2012-02-09T08:19:39.077 回答
0

当您有两个对同一个文件进行更改的分支并尝试合并它们时,将发生合并冲突。git status查看终端上运行的冲突文件列表。

文件的冲突行将用视觉指示器标记​​: <<<<<- 冲突在此行之后开始。 =====- 从 HEAD 和 merging_branch 中分离出变化。 >>>>>- 冲突行结束。

<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch

当您修复冲突文件并准备好合并时,您所要做的就是运行git addgit commit生成合并提交。提交后,git push对分支的更改。

参考文章:Git 合并

于 2018-05-22T12:08:46.090 回答