2

我正在尝试在 Windows 8.1 系统上的 Git Bash 中使用 KDiff3 作为 difftool,我承认我对 Git 很陌生。当我尝试将暂存文件与已提交文件进行比较时,我无法打开 KDiff3,我对如何处理它感到困惑。我在网上找到了将 KDiff3 设置为合并工具的说明,我猜想我需要做一些类似的事情来将其设置为diff工具(我无法为新手找到足够明确的说明来设置 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 新手,所以如果我没有提供一些关键信息,请告诉我。

4

2 回答 2

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"

由于“程序”和“文件”之间有空格,因此需要双引号。

此 PATH 行可以添加到您的 .bashrc 或 .bash_profile 中,具体取决于您如何启动 bash...

- - 更新 - -

更正:由于 Git Bash 使用 Windows 系统定义的环境变量 'PATH' + Windows 用户定义的环境变量 'PATH'。上述 PATH 更改更难(使用 .bashrc 等)。只需更改 Windows 环境变量,如此链接和/或此链接

于 2014-12-03T04:07:13.050 回答
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 的变化。

于 2017-02-06T09:44:05.943 回答