为了与互联网上发布的许多解决方案保持一致,我安装了KDiff3,并修改了.gitconfig
,如下所示。尽管如此,当我在存储库中运行git diff HEAD^ HEAD
进行测试时,我会得到由默认工具执行的diff。我在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
实际上,不需要包装器脚本。如果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
使用git difftool
调用配置的diff工具,而不是git diff
。
由于您似乎使用的是cygwin-git,但使用的是本机kdiff3,因此您可能还需要调用包装脚本,而不是直接调用kdiff3来使用cygpath
将路径从cygwin形式转换为本机形式。
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
这在cywin 64位上运行良好