2016-09-28 79 views
4

我可以拿winmerge來顯示修改文件的差異。但對於新文件,winmerge會提供一個對話框,說明「左路徑無效!」。我希望它將左窗格顯示爲空白,右窗格顯示文件的內容。如何讓winmerge在git中顯示新文件的diff?

$ git difftool head^ newfile.txt 

的WinMerge對話框:

enter image description here

我對Git版本2.8.2.windows.1

這是我difftool混帳配置:

[diff] 
    tool = winmerge 
[difftool] 
    prompt = false 
[difftool "winmerge"] 
    cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\" 

我錯過了什麼?

+2

到目前爲止,我看到了類似的問題:http://stackoverflow.com/a/33369083/6309 – VonC

回答

4

我無法找到這個確切的解決方法,所以我張貼這個。希望有人認爲它有用。

我使用一個winmerge.sh腳本,它只是爲新添加(或刪除)的文件傳遞一個已經創建的空文件。該腳本位於我的PATH/git/cmd/目錄中,用於git bash。

winmerge.sh(類似於一個here

#!/bin/sh 
# $1 is $LOCAL 
# $2 is $REMOTE 
NULL="/dev/null" 
empty="$HOME/winmerge.empty" 
if [ "$2" = "$NULL" ] ; then 
    # added 
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl -wr "$1" "$empty" 
elif [ "$1" = "$NULL" ] ; then 
    # removed 
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$empty" "$2" 
else 
    # modified 
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$1" "$2" 
fi 

我保持一個空文件winmerge.empty在此路徑$HOME(這是c:/users/<username>)。我使用sh腳本.gitconfig

的.gitconfig

[diff] 
    tool = winmerge 
[difftool] 
    prompt = false 
[difftool "winmerge"] 
    cmd = winmerge.sh "$LOCAL" "$REMOTE" 

注:

把分差未跟蹤的文件(新文件)也提交之前,我做

$ git add -N --no-all . 

然後使用difftool-N --no-all僅添加新文件的路徑而不索引它們的內容(需要--no-all才能暫存已刪除的文件)。

相關問題