gpt4 book ai didi

git - 如何让 winmerge 显示 git 中新文件的差异?

转载 作者:太空狗 更新时间:2023-10-29 13:33:20 27 4
gpt4 key购买 nike

我可以让 winmerge 显示修改文件的差异。但是对于新文件,winmerge 会给出一个对话框,提示“左路径无效!”。我希望它将左 Pane 显示为空,右 Pane 显示文件内容。

$ git difftool head^ newfile.txt

winmerge 对话框:

enter image description here

我使用的是 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\"

我错过了什么?

最佳答案

我找不到这个确切的解决方法,所以我发布了这个。希望有人觉得它有用。

我使用 winmerge.sh脚本,它只是为新添加(或删除)的文件传递一个已经创建的空文件。该脚本在我的目录中 PATH/git/cmd/ 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 才能暂存已删除的文件)。

关于git - 如何让 winmerge 显示 git 中新文件的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39756836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com