如何获取winmerge以显示git中新文件的差异?

hIp*_*pPy 4 git winmerge difftool

我可以通过winmerge向我展示修改后的文件的差异。但是对于新文件,winmerge会显示一个对话框,提示“左路径无效!”。我希望它将左窗格显示为空白,而右窗格显示文件的内容。

$ git difftool head^ newfile.txt
Run Code Online (Sandbox Code Playgroud)

winmerge对话框:

在此处输入图片说明

我在git版本2.8.2.windows.1上

这是我的difftool的git配置:

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

我想念什么?

hIp*_*pPy 6

我找不到确切的解决方法,因此我将其发布。希望有人发现它有用。

我使用的winmerge.sh脚本只是将已经创建的空文件传递给新添加(或删除)的文件。该脚本位于我PATH/git/cmd/git bash的目录中。

winmerge.sh(类似于此处的一个)

#!/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
Run Code Online (Sandbox Code Playgroud)

winmerge.empty在此路径$HOME(是c:/users/<username>)上保留了一个空文件。

我在中使用sh脚本.gitconfig

.gitconfig

[diff]
    tool = winmerge
[difftool]
    prompt = false
[difftool "winmerge"]
    cmd = winmerge.sh "$LOCAL" "$REMOTE"
Run Code Online (Sandbox Code Playgroud)

注意:

在提交之前也要比较未跟踪的文件(新文件),我这样做

$ git add -N --no-all .
Run Code Online (Sandbox Code Playgroud)

然后使用difftool-N --no-all仅将新文件的路径添加到索引中,但不添加其内容(--no-all不暂存已删除文件是必需的)。