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
4

3 回答 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
于 2014-11-14T02:05:05.590 回答
2

用于git difftool调用配置的差异工具,而不是git diff.

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

于 2013-02-26T20:15:24.847 回答
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

这在 cywin 64bit 上工作正常

于 2015-10-06T06:46:18.003 回答