git bash:无法将kdiff3生成为difftool

时间:2014-12-03 02:45:46

标签: git bash kdiff3 difftool

我正在尝试在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的新手,所以如果我没有提供一些关键信息,请告诉我。

2 个答案:

答案 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中的更改。