如何让winmerge在git中显示新文件的diff? [英] How to get winmerge to show diff for new file in git?
问题描述
我可以用winmerge来显示修改文件的差异。但对于新文件,winmerge会提供一个对话框,说明左路径无效!。我希望它将左窗格显示为空白,右窗格显示文件的内容。
$ git difftool head ^ newfile.txt
winmerge对话框:
我是git版本2.8.2.windows.1
这是我用于difftool的git配置:
[diff]
工具= winmerge
[difftool]
提示符= false
[difftoolwinmerge]
cmd = \C:\\ Program Files(x86)\\WinMerge\\WinMergeU.exe\-e -ub -wl \$ LOCAL \\\ \\$ REMOTE \
我错过了什么?
我无法找到这个确切的解决方法,所以我张贴这个。希望有人认为它有用。
我使用一个 winmerge.sh
脚本,该脚本只传递一个已经创建的空文件用于新添加(或删除)文件。该脚本位于我的 PATH
或 / git / cmd /
dir目录中,用于git bash。
winmerge.sh (类似于此处
#!/ bin / sh
#$ 1是$ LOCAL
#$ 2是$ REMOTE
NULL =/ dev / null
empty =$ HOME / winmerge.empty
if [$ 2=$ NULL];然后
#添加
D:/setups/WinMerge/WinMergeU.exe-e -ub -wl -wr$ 1$ empty
elif [$ 1=$空值 ] ;然后
#被删除
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
中的
$ b .gitconfig
[diff]
工具= winmerge
[difftool]
提示符= false
[difftoolwinmerge]
cmd = winmerge.sh$ LOCAL$ REMOTE
在提交之前还要分析未跟踪的文件(新文件),我做了
$ git add -N - 不全。
然后使用 difftool
。 -N --no-all
只会将新文件的路径添加到索引中,而不会添加到它们的内容( - no-all
是不要阶段删除的文件)。
I can get winmerge to show me diffs for modified file. But for new files, winmerge gives a dialog saying 'Left path is invalid!'. I want it to show the left pane as empty and right pane with the contents of the file.
$ git difftool head^ newfile.txt
winmerge Dialog:
I'm on git version 2.8.2.windows.1
This is my git config for difftool:
[diff]
tool = winmerge
[difftool]
prompt = false
[difftool "winmerge"]
cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\"
What am I missing?
I could not find this exact workaround so I'm posting this. Hopefully, someone finds it useful.
I use a winmerge.sh
script which simply passes an already created empty file for newly added (or removed) file. The script is in a dir that's on my PATH
or /git/cmd/
dir for git bash.
winmerge.sh (similar to one 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
I keep an empty file winmerge.empty
at this path $HOME
(which is c:/users/<username>
).
I use the sh
script in .gitconfig
.
.gitconfig
[diff]
tool = winmerge
[difftool]
prompt = false
[difftool "winmerge"]
cmd = winmerge.sh "$LOCAL" "$REMOTE"
Note:
To diff untracked files (new files) also before committing, I do
$ git add -N --no-all .
then use difftool
. -N --no-all
only adds the path of new files to index but not their content (--no-all
is required to NOT stage the deleted files).
这篇关于如何让winmerge在git中显示新文件的diff?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!