git difftool 未按照 .gitconfig 中的配置工作

git difftool is not working as configured in .gitconfig

我正在使用 Beyond Compare 作为我的外部差异工具。当我像在其他计算机上所做的那样在 .gitconfig 中在我的新计算机上配置它时,它不起作用。如果我用太多引号指定 extcmd,那么它确实有效。

现在和以前的一个很大区别是我在我的新存储库上使用 LFS。

.git配置文件:

[diff]
    tool = bc4
    renameLimit = 999999
[difftool]
    prompt = false
[difftool "bc4"]
    cmd = 'C:/Program Files/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\"

不起作用(使用单引号或双引号):

$ git difftool --extcmd='C:/Program Files/Beyond Compare 4/BComp.exe' HEAD
C:/Program Files/Git/mingw64/libexec/git-core\git-difftool--helper: line 62: C:/Program: No such file or directory
fatal: external diff died, stopping at file.cs

有效:

git difftool --extcmd="'C:/Program Files/Beyond Compare 4/BComp.exe'" HEAD
  1. 我怎样才能让它工作以便我可以只使用 git difftool HEAD

  2. Git LFS 是否导致了我的问题?

  3. 是不是我的新电脑配置有误导致了我的问题?

我尝试将配置中的单引号 (') 更改为双引号 ("),但这也不起作用。

我正在使用 git 版本 2.29.2.windows.2 全新安装 Windows 10.

编辑:忘了说清楚“不起作用”是什么意思: 它不会打开 Beyond Compare,但也没有错误消息。它似乎在几秒钟内什么都不做:

$ git difftool HEAD

$

我的整个 .gitconfig(以防有帮助):https://hastebin.com/icuduxecen.ini

除非您有特定原因指定完整的命令行来调用 Beyond Compare,否则请仅指定程序的路径:

[difftool "bc4"]
    path = "C:/Program Files/Beyond Compare 4/BComp.exe"

注意双引号和正斜杠。

编辑:一定要删除行 cmd =(或者将其重命名为 cmdxcmdx 或者如果您不想删除它则隐藏它)。

这实际上是 git 中的一个错误,已在 v2.29.2(2) 中修复。

https://github.com/git-for-windows/git/issues/2893