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