update - git是什麼




如何才能看到Git合併衝突的“三方差異”? (2)

假設我在Git分支master ,我git merge featurebranchfoo.html存在衝突。

當我打開foo.html ,我看到,在衝突領域, master有什麼以及功能featurebranch有什麼。 但是我無法確切地告訴masterfeaturebranch發生了什麼相關的變化 ; 我只知道主人現在有什麼。

我想看看每個應用的差異

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

  • 版本master現在有了
  • 版本功能featurebranch現在
  • 他們共同祖先的版本

我怎麼能看到這個?


git-merge(1)

通過將“merge.conflictstyle”配置變量設置為“diff3”,可以使用替代樣式。

除了<<<<<<<=======>>>>>>>標記之外,它還使用了另一個||||||| 標記後跟原始文本。 你可以說原來只是陳述了一個事實,而你的一方只是屈服於那個陳述並放棄了,而另一方則試圖採取更積極的態度。 您有時可以通過查看原始分辨率來獲得更好的分辨率。

這可以使用

$ git config --global merge.conflictstyle diff3

許多GUI diff / merge工具都有3或4路合併視圖。 我強烈推薦Beyond Compare來解決合併衝突。 另一個(好的)工具是DiffMerge

您可以設置自定義mergetool以與git mergetool命令一起使用。 這是我在Windows機器上使用msysgit進行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\""

您可以在git config官方Linux Kernel Git文檔中閱讀有關各種差異/合併工具配置的更多信息。







git