我找不到这个确切的解决方法,所以我发布了这个。希望有人觉得它有用。
我使用一个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
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不需要暂存已删除的文件)。