合并冲突解决

当Git发生合并冲突时,类似下面的垃圾被插入到冲突的文件中。 三个问题:

  1. 你如何阅读这些注释?
  2. 解决这些合并冲突时有什么策略可以使用?
  3. 是否有一个Mac的graphics用户界面工具,知道如何阅读这些文件,并排显示这两个版本,使其更容易解决这个问题?

在这里输入图像说明

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

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

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

有冲突标记意味着这部分文件的基本版本不同于“新”版本。 基本版本(最后的共同祖先)没有显示。

如果你想要一个更舒适的合并,并有一个graphics用户界面,我build议你看看kdiff3。

现在有一个比试图阅读Git插入到文件中的乱码标记更好的解决scheme。 万花筒2 ,黑色像素的第二个版本的diff工具,现在也是一个合并工具。 这不是免费的,但它的作品非常漂亮。

安装万花筒2后,与Git集成非常简单。 打开万花筒,从菜单栏中select万花筒 > 集成…

万花筒的集成菜单选项。

然后你会看到这个窗口。 只需从左侧导航栏中selectGit ,然后安装ksdiff命令行工具,然后制作Kaleidoscope Git的默认差异和合并工具。

万花筒的Git集成对话框。

最后,一旦在Git中发生合并冲突,只需转到命令行并执行git mergetool 。 现在冲突很容易阅读。 请享用。

对于合并冲突万花筒理智的看法。

 <<<< 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

您可以configuration(graphics)合并工具,并使用该工具来解决冲突。

也看看git mergetool命令 – 如果你有一个预定义的工具安装或configuration了一些其他的工具,它会打开工具的解决schemehttp://schacon.github.com/git/git- mergetool.html

如果您对GUI工具感兴趣,您不必担心这些符号的真实含义,因为GUI工具将帮助您轻松制作分辨率。 只要明白用=====>>>>>标记的部分就是冲突部分。