2010-03-18 92 views
45

我使用Git Extensions並預安裝和設置KDiff作爲比較工具來解決合併衝突。我非常喜歡Winmerge,並且想用Winmerge取代KDiff。如何在Git擴展中使用Winmerge?

在Git的擴展設置,還有一些設置來改變合併工具,但我似乎無法找出什麼語法我應該使用以及爲什麼。似乎有4個變量:$ BASE,$ LOCAL,$ REMOTE,$ MEDED。看來我應該將這些傳遞給WinMergeU.exe,但使用哪些命令行參數?

我試圖尋找這幾次,但沒有答案,實際上似乎工作。

+2

會http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program/949242#949242或http://stackoverflow.com//1881594/use-winmerge-inside-of-git-to-file-diff/1884517#1884517 help? – VonC 2010-03-18 08:14:26

+1

查看我的答案,最簡單的,點擊解決方案 – 2015-03-20 22:55:02

回答

43

概述
下面是關於如何設置Git版本控制,這樣就可以使用更好的工具集,比默認的安裝說明。該設置要求已安裝GIT Extensions,並且需要在GIT擴展中配置Winmerge。

安裝
瀏覽所有提示並安裝在Winmerge的默認目錄中。

在GIT版本控制中配置Winmerge
在文本編輯器中打開一個新文檔。 複製/粘貼以下內容並將文檔另存爲「wMerge.sh」到您的「C:\ Program Files(x86)\ Git \ bin \」目錄中。

echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2" 

轉到您的「用戶 - >用戶名」目錄並找到.gitconfig文件。在你喜歡的編輯器複製打開它/粘貼以下代碼並保存:

[user] 
    name = enter your name 
    email = [email protected] 
[core] 
    autocrlf = false 
[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = wMerge.sh \"$MERGED\" \"$REMOTE\" 
    path = c:/Program Files (x86)/winmerge/winmergeu.exe 
[mergetool] 
    keepBackup = false 
    trustExitCode = false 
[diff] 
    guitool = winmerge 
[difftool "winmerge"] 
    path = c:/Program Files (x86)/winmerge/winmergeu.exe 
    cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\" 

運行「GitExtensions」,轉到「工具 - >設置 - > Git的擴展 - > Git的配置」。如果您已正確完成安裝並將工具引用到其目錄,則您的全局設置頁面應如下所示(注意:請填寫姓名和電子郵件地址):

mergetool:winmerge
mergetool的路徑: c:/Program Files (x86)/winmerge/winmergeu.exe
合併工具命令:wMerge.sh "$MERGED" "$REMOTE"
difftool:winmerge
路徑difftool:c:/Program Files (x86)/winmerge/winmergeu.exe
difftool命令:"c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"

行結束:結帳原樣,提交原樣

導航到清單選項卡以驗證GIT是否都是「綠色」並且滿足您的設置。

+0

喜歡你清楚地提到一切的方式 – Kiarash 2013-11-17 06:16:08

+0

我把wMerge.sh放在/ Git/bin /中,但是我得到了這個:/ mingw64/libexec/git-core/git-mergetool -lib:第133行:wMerge.sh:找不到命令 – 2017-01-19 19:40:42

8

@ sebastiaan的回答並沒有爲我工作(也許是過時的?)

這些都是「全局設置」那我用GitExtensions 2.28工作:

合併工具:winmerge
路徑合併工具:D:/path/to/WinMerge/WinMergeU.exe
Mergetool命令:"D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
這會導致WinMerge使用由git生成的「衝突文件」。
-e允許按下ESC關閉winmerge。

Difftool:winmerge
路徑difftool:D:/path/to/WinMerge/WinMergeU.exe
Difftool命令:"D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl-dr設置爲描述左側和右側窗格中。

+0

這對我有用 – ranthonissen 2013-12-13 15:25:20

+0

這是正確的答案...對我來說問題在於GitExtensions對於WinMerge的默認設置沒有包含「-dl」本地「-dr」遠程「」。謝謝! – 2014-05-01 00:55:42

3

添加或更改配置文件中的以下內容:

[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED" 

該解決方案是在兩個方面不同:

  1. 簡單地調用WinMergeU.exe *conflictfile*,而雙面通話的事實,遭受左手窗口呈現<<<<<<<,=======>>>>>>> $ MERGED包含的標記。
  2. 在per-repo基礎上應用mergetool - 我在編輯$ GIT_DIR/config文件。調用沒有--system或--global參數的git config也可以達到同樣的結果。這是要注意的是有a few scopes of configuration to choose from

$ PROGRAMFILES變量由git bash和(與本機windows cmd上的類似變量不同)維護,它導航到「Program Files(x86)」。

+0

我不認爲這裏需要$ PWD。沒有它,這個答案適用於我。 – robertpateii 2013-03-04 21:20:24

10

在Windows 7上,這是最終爲我工作的。請注意0​​引用我的程序文件路徑。

[merge] 
    tool = winmerge 
[mergetool "winmerge"] 
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED" 
[diff] 
    tool = winmerge 
[difftool "winmerge"] 
    cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr 
+0

這也適用於我在Windows 7上。謝謝:) – 2013-11-15 00:45:37

+0

這解決了我的問題爲Windows 10的Visual Studio 2015年。謝謝! – 2017-10-05 11:29:58

17

在Git的擴展v2.47.3,它真的很容易設置此:

設置 - 在「合併工具」手工寫的下拉> - >全局設置:WinMerge,看奇蹟。

與「Difftool」下拉菜單相同。

enter image description here

|| || || 
\/ \/ \/ 

enter image description here

這只是愚蠢的 '的WinMerge' 選項沒有預填充的下拉列表。好吧。

+3

這個爲我工作就像一個魅力:) – 2015-03-20 18:43:50

+1

這是最簡單的解決方案:) – 2015-05-05 09:00:58