如何才能看到Git合并冲突的“三方差异”?

时间:2013-08-08 16:42:53

标签: git

假设我在Git分支master和我git merge featurebranchfoo.html中存在冲突。

当我打开foo.html时,我会在冲突区域看到master有什么以及featurebranch有什么。但是,我无法真正告诉masterfeaturebranch发生冲突的做出了哪些更改;我只知道主人有现在

我希望看到每个应用的差异

或者,为了获得相同的信息,我可以看到:

  • 版本master现在
  • 版本featurebranch现在
  • 版本他们的共同祖先

我怎么能看到这个?

2 个答案:

答案 0 :(得分:81)

来自git-merge(1)

  

通过将“merge.conflictstyle”配置变量设置为“diff3”,可以使用替代样式。

     

<<<<<<<=======>>>>>>>标记外,它还使用另一个|||||||标记,后跟原始文本。你可以说原来只是陈述了一个事实,而你的一方只是屈服于那个陈述并放弃了,而另一方则试图采取更积极的态度。您有时可以通过查看原始分辨率来获得更好的分辨率。

可以使用

启用
$ git config --global merge.conflictstyle diff3

答案 1 :(得分:11)

许多GUI差异/合并工具都有3或4路合并视图。我强烈建议Beyond Compare解决合并冲突。另一个(好的)工具是DiffMerge

您可以设置自定义合并工具以与git mergetool命令一起使用。这是使用msysgit在我的Windows机器上进行Beyond Compare(专业版)和DiffMerge的.gitconfig配置:

[merge]
    tool = bc3
[diff]
    tool = bc3
[difftool "dm"]
    cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
[difftool "bc3"]
    cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[mergetool "bc3"]
    cmd = "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""

您可以在official Linux Kernel Git documentation for git config中阅读有关各种差异/合并工具配置的更多信息。