KDiff3在cygwin git下无法调用

3

根据互联网上发布的许多解决方案,我已经安装了KDiff3,并修改了.gitconfig文件以便使用它。然而,在存储库中运行git diff HEAD^ HEAD进行测试时,我得到了由默认工具执行的差异。我在Windows7-64上运行cygwin git。有人能解释一下为什么没有调用KDiff3吗?

[diff]
    tool = kdiff3
[merge]
    tool = kdiff3

[difftool "kdiff3"]
    path = \"D:/Program Files (x86)/KDiff3/kdiff3.exe\"
    keepBackup = false
    trustExitCode = false

[mergetool "kdiff3"]
    path = \"D:/Program Files (x86)/KDiff3/kdiff3.exe\"
    keepBackup = false
    trustExitCode = false

各个部件在哪里运行?这全部(我希望!)都在Cygwin中吗?部分是本地的Windows应用程序,如果是,那哪些? - AlG
是的,它正在Cygwin中运行,请查看jturney的回复以了解我已经到达哪里。 - lovelyzoo
3个回答

3
实际上,不需要包装脚本。如果kdiff3.exe不在您的路径中,则需要在cmd中给出完整路径,如cmd = /cygdrive/c/apps/KDiff3/kdiff3 ... 我的.gitconfit
[diff]
    tool = kdiff3
[merge]
    tool = kdiff3
[difftool "kdiff3"]
    cmd = kdiff3 \"$(cygpath -wla $LOCAL)\" \"$(cygpath -wla $REMOTE)\"
    trustExitCode = false
[mergetool "kdiff3"]
    cmd = kdiff3 \"$(cygpath -wla $BASE)\" \"$(cygpath -wla $LOCAL)\" \"$(cygpath -wla $REMOTE)\" -o \"$(cygpath -wla $MERGED)\"
    keepBackup = false
    trustExitCode = false
[mergetool]
    prompt = false
[difftool]
    prompt = false

2

请使用git difftool来调用已配置的diff工具,而不是git diff

由于您似乎正在使用cygwin git,但是使用本机的kdiff3,因此您可能还需要调用包装脚本,而不是直接使用kdiff3,以使用cygpath将路径从cygwin格式转换为本机格式。


这样做会导致: 查看:'file.py' 启动 'kdiff3' [Y/n]: Y 之后工具没有启动,我想包装器会解决这个问题吧? - lovelyzoo
使用Windows窗体路径来使用kdiff3似乎行不通。你尝试过使用包装脚本吗? - jturney
1
好的,我已经尝试使用包装脚本。但是我仍然会得到“启动'kdiff3'”提示。我回答Y。一旦我这样做,响应就是:“差异工具kdiff3不可用为'/bin/kdiff3.sh'”。请注意,在命令行上调用/bin/kdiff3.sh时可以成功启动Kdiff。 - lovelyzoo
1
嗯...看起来那个页面不太对,你不能在.gitconfig文件中放置~,所以用/home/jon或者你的$HOME目录替换它。 - jturney
显示剩余2条评论

1
git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global mergetool.kdiff3.keepbackup=false
git config --global mergetool.kdiff3.trustexitcode=false

请检查配置:git config --global -l

这在64位的cygwin上运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接