74

假设我在 Git 分支上master,我git merge featurebranch. 中存在冲突foo.html

当我打开时foo.html,我看到,在冲突区域,有什么master和有什么featurebranch。但我无法真正说出与;相冲突的地方发生了什么变化。我只知道主人有什么masterfeaturebranch现在有什么。

我想看看每个人应用的差异。

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

  • 版本master已经
  • 版本featurebranch已经
  • 他们共同祖先的版本

我怎么能看到这个?

4

2 回答 2

112

git-merge(1)

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

除了<<<<<<<=======>>>>>>>标记之外,它还使用另一个|||||||标记,后跟原始文本。...您有时可以通过查看原件来获得更好的分辨率。

这可以使用启用

git config --global merge.conflictstyle diff3

或在~/.gitconfig文件中

[merge]
  conflictstyle = diff3
于 2013-08-08T16:46:26.300 回答
11

许多 GUI diff/merge 工具都有 3 或 4 路合并视图。我强烈推荐Beyond Compare来解决合并冲突。另一个(好的)工具是DiffMerge

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

[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\""

您可以git config.

于 2013-08-08T16:57:28.987 回答