我可以让winmerge向我展示修改过的文件的差异。但对于新文件,winmerge会给出一个对话框,说“左路径无效!”。我希望它将左窗格显示为空,右窗格显示文件的内容。
$ git difftool head^ newfile.txt
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\"
我错过了什么?
答案 0 :(得分:4)
我找不到这个确切的解决方法所以我发布了这个。希望有人发现它很有用。
我使用winmerge.sh
脚本,它只是为新添加(或删除)的文件传递已创建的空文件。该脚本位于我的PATH
或/git/cmd/
dir上的目录中,用于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
是否需要暂存已删除的文件。)