我怎样才能看到一个Git合并冲突的“三种比较”?
假设我在Git分支master
和我git merge featurebranch
。 foo.html
存在冲突。
当我打开foo.html
,我在冲突的领域看到了什么是master
,什么是featurebranch
。 但我真的不知道master
与featurebranch
发生了什么变化 。 我只知道现在的主人
我想看看每个应用的差异 。
或者,要得到相同的信息,我可以看到:
- 版本
master
现在已经 - 版本
featurebranch
现在 - 他们的共同祖先的版本
我怎样才能看到这个?
从git-merge(1) ,
通过将“merge.conflictstyle”configurationvariables设置为“diff3”,可以使用其他样式。
除了
<<<<<<<
,=======
和>>>>>>>
标记之外,它还使用另一个
| 标记后跟原始文本。 你可以说原来只是陈述了一个事实,你方只是放弃了那个陈述而放弃了,而另一方则试图有一个更积极的态度。 有时你可以通过查看原件来获得更好的分辨率。
这可以使用启用
$ git config --global merge.conflictstyle diff3
很多GUI差异/合并工具都有3或4路合并视图。 我强烈build议Beyond Compare解决合并冲突。 另一个(好的)工具是DiffMerge 。
你可以设置一个自定义的mergetool来和git mergetool
命令一起使用。 这是我使用msysgit在我的Windows机器上的超越比较(专业版)和DiffMerge的.gitconfig
configuration:
[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
官方的Linux Kernel Git文档中阅读关于各种差异/合并工具configuration的更多信息。