我正在尝试在Windows 8.1系统上使用KDiff3作为Git Bash中的difftool,而且我无疑是Git的新手。当我尝试将分阶段文件与提交文件进行比较时,我无法打开KDiff3,而我对如何处理它感到困惑。我在网上找到了设置KDiff3作为 merge 工具的指示,我猜我需要做类似的事情来设置它作为 diff 工具(我还没有能够为新手找到设置差异工具的足够明确的方向,这就是为什么我在这里)。这是我在下载并安装KDiff3之后所做的:
git config --global diff.tool kdiff3
git config --global difftool.kdiff3.cmd '"C:\\Program Files\\KDiff3\\kdiff3" $BASE $LOCAL $REMOTE -o $MERGED'
Git没有向我发出任何错误,所以也许这是正确的?我完全承认我不懂这里的语法!无论如何,当我尝试这个时:
git diff HEAD
我明白了:
error: cannot spawn kdiff3: No such file or directory
external diff died, stopping at MyFile.R
我环顾四周,当他们的$ PATH设置不正确时,我看到一些人提到类似问题。我真的不知道$ PATH是什么(如果有人可以启发我,我会非常感激),但我为KDiff3(C:\ Program Files \ KDiff3 \ kidff3)获得的路径绝对是其中kdiff3.exe位于我的机器上。有什么建议吗?
提前致谢,正如我所说,我是Git的新手,所以如果我没有提供一些关键信息,请告诉我。
答案 0 :(得分:3)
我建议你放弃你的第二行配置,因为Git bash已经定义了如何使用kdiff3。 (你可以查看你的Git Bash的安装。例如,在我的路径中,我可以找到C:\ Program Files(x86)\ Git \ libexec \ git-core \ mergetools \ kdiff3,这是kdiff3的配置文件) 。您唯一需要做的就是将kdiff3放在PATH变量中。
仅使用第一行:
git config --global diff.tool kdiff3
但不是你的第二行:
#### comment out this line:
# git config --global difftool.kdiff3.cmd '"C:\\Program Files\\KDiff3\\kdiff3" $BASE $LOCAL $REMOTE -o $MERGED'
要修复已添加的配置,请尝试在GIT BASH下编辑.gitconfig
vim ~/.gitconfig
找到[difftool "kdiff3"]
部分,然后删除该部分下cmd=
的行。您也可以删除整个部分(即删除包含[difftool "kdiff3"]
然后将您的路径添加到kdiff3:
PATH=$PATH:"/c/Program Files/KDiff3"
由于" Program"之间的空间,需要双引号。和"文件"。
此PATH行可以添加到您的.bashrc或.bash_profile中,具体取决于您启动bash的方式......
---更新---
校正: 由于Git Bash使用Windows系统定义的环境变量' PATH' + Windows用户定义的环境变量' PATH'。上面的PATH更改更难(使用.bashrc等)。只需更改{@ 3}}和/或this link
等Windows环境变量即可答案 1 :(得分:0)
在GitBash中更改第二行:
git config --global diff.tool kdiff3
git config --global difftool.kdiff3.path 'c:\Program Files\KDiff3\kdiff3.exe'
全局.gitconfig
中的相应部分如下所示:
[diff]
tool = kdiff3
[difftool "kdiff3"]
path = c:\\Program Files\\KDiff3\\kdiff3.exe
只是为了避免混淆:
现在git difftool HEAD
启动kdiff3
。
但git diff HEAD
仍会显示GitBash中的更改。