2012-02-09 266 views
54

当Git中存在合并冲突时,类似以下的垃圾被插入到冲突文件中。三个问题:合并冲突解决

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

enter image description here

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

+1

可能重复[我该如何解决合并Git中的冲突?(http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in-git ) - #1链接,如果谷歌“混帐合并冲突” – 2012-02-09 08:05:28

回答

20

现在有一个比试图读取Git插入到文件中的乱码标记更好的解决方案。 Kaleidoscope 2,Black Pixel的差异工具的第二个版本,现在也是合并工具。这不是免费的,但它运作得非常好。

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

Kaleidoscope's Integration menu option.

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

Kaleidoscope's Git Integration dialog.

最后,一旦你在Git的合并冲突,只需进入命令行和执行git mergetool。现在冲突很容易理解。请享用。

Kaleidoscope sane view for merge conflicts.

+2

我想知道如何标记通过万花筒解决 – 2016-08-05 04:05:40

+1

@FrankFang当你解决所有冲突时,你只需要关闭窗口。你会被问及合并是否可以。 – 2017-02-16 23:15:33

34

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

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

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

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

+0

谢谢,西蒙。有没有一些GUI应用程序可以打开这些文件,并显示HEAD和合并版本? – 2012-02-09 08:12:54

+0

按照上面@Brian建议的链接。 – 2012-02-09 08:19:25

+0

您能指出我该链接中哪些信息有用吗?我的git手册是无法访问的。 – 2012-02-09 08:39:38

16
<<<< HEAD #Where the conflict starts 

#Previous Revision 

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

#Things that changed 

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

苹果的Xcode自带FileMerge它可以在命令行上opendiff访问。

git mergetool -t opendiff

+2

这是什么意思,如果没有什么改变,但我仍然有冲突? – Ken 2013-02-08 06:51:16

+0

git mergetool -t opendiff是我的答案。谢谢。 – Billy 2015-03-12 16:18:35

4

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

也有看看git mergetool命令 - 如果你有安装了预定义的工具之一或已经配置了一些其他的工具,这将打开工具http://schacon.github.com/git/git-mergetool.html

分辨率如果您有兴趣的GUI工具,因为GUI工具将帮助您轻松制作分辨率,所以您无需担心符号的真正含义。只要理解标记为=====>>>>>的部分是冲突部分。

+1

你能给我一个可以读取这些文件并解释如何打开它们的Mac GUI应用程序的例子吗?我已经尝试在不同的差异和合并工具中打开这些文件,并且它们只是作为单个文本文件打开,而不是被解释为两个文件。 (这是冲突标记的全部目的。) – 2012-02-09 08:38:00