假设我在Git分支master
和我git merge featurebranch
。 foo.html
中存在冲突。
当我打开foo.html
时,我会在冲突区域看到master
有什么以及featurebranch
有什么。但是,我无法真正告诉master
与featurebranch
发生冲突的做出了哪些更改;我只知道主人有现在。
我希望看到每个应用的差异。
或者,为了获得相同的信息,我可以看到:
master
现在featurebranch
现在我怎么能看到这个?
答案 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
中阅读有关各种差异/合并工具配置的更多信息。