如何让 winmerge 显示 git 中新文件的差异?
How to get winmerge to show diff for new file in git?
我可以让 winmerge 显示修改文件的差异。但是对于新文件,winmerge 会给出一个对话框说 'Left path is invalid!'。我希望它将左窗格显示为空,右窗格显示文件内容。
$ git difftool head^ newfile.txt
winmerge 对话框:
我正在使用 git 版本 2.8。2.windows.1
这是我的 git difftool 配置:
[diff]
tool = winmerge
[difftool]
prompt = false
[difftool "winmerge"]
cmd = \"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\"
我错过了什么?
我找不到这个确切的解决方法,所以我发布了这个。希望有人觉得它有用。
我使用 winmerge.sh
脚本,它只是为新添加(或删除)的文件传递一个已经创建的空文件。该脚本位于 PATH
或 /git/cmd/
目录中 git bash.
的目录中
winmerge.sh(类似于一个here)
#!/bin/sh
# is $LOCAL
# is $REMOTE
NULL="/dev/null"
empty="$HOME/winmerge.empty"
if [ "" = "$NULL" ] ; then
# added
"D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl -wr "" "$empty"
elif [ "" = "$NULL" ] ; then
# removed
"D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$empty" ""
else
# modified
"D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "" ""
fi
我在这个路径$HOME
(即c:/users/<username>
)保留了一个空文件winmerge.empty
。
我在.gitconfig
中使用了sh
脚本。
.git配置
[diff]
tool = winmerge
[difftool]
prompt = false
[difftool "winmerge"]
cmd = winmerge.sh "$LOCAL" "$REMOTE"
注:
为了在提交之前区分未跟踪的文件(新文件),我这样做
$ git add -N --no-all .
然后使用difftool
。 -N --no-all
只将新文件的路径添加到索引而不是它们的内容(需要 --no-all
才能不暂存已删除的文件)。
我可以让 winmerge 显示修改文件的差异。但是对于新文件,winmerge 会给出一个对话框说 'Left path is invalid!'。我希望它将左窗格显示为空,右窗格显示文件内容。
$ git difftool head^ newfile.txt
winmerge 对话框:
我正在使用 git 版本 2.8。2.windows.1
这是我的 git difftool 配置:
[diff]
tool = winmerge
[difftool]
prompt = false
[difftool "winmerge"]
cmd = \"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\"
我错过了什么?
我找不到这个确切的解决方法,所以我发布了这个。希望有人觉得它有用。
我使用 winmerge.sh
脚本,它只是为新添加(或删除)的文件传递一个已经创建的空文件。该脚本位于 PATH
或 /git/cmd/
目录中 git bash.
winmerge.sh(类似于一个here)
#!/bin/sh
# is $LOCAL
# is $REMOTE
NULL="/dev/null"
empty="$HOME/winmerge.empty"
if [ "" = "$NULL" ] ; then
# added
"D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl -wr "" "$empty"
elif [ "" = "$NULL" ] ; then
# removed
"D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$empty" ""
else
# modified
"D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "" ""
fi
我在这个路径$HOME
(即c:/users/<username>
)保留了一个空文件winmerge.empty
。
我在.gitconfig
中使用了sh
脚本。
.git配置
[diff]
tool = winmerge
[difftool]
prompt = false
[difftool "winmerge"]
cmd = winmerge.sh "$LOCAL" "$REMOTE"
注:
为了在提交之前区分未跟踪的文件(新文件),我这样做
$ git add -N --no-all .
然后使用difftool
。 -N --no-all
只将新文件的路径添加到索引而不是它们的内容(需要 --no-all
才能不暂存已删除的文件)。