Git配置Beyond Compare必须指定完整可执行文件路径,且需同时配置diff和merge工具;VSCode需关闭git.useEditorAsDefaultDiffTool并处理macOS权限问题。

Git 配置里 beyondcompare 的路径必须带完整可执行文件名
VSCode 本身不直接管理 Git 合并工具,它依赖系统级的 Git 配置。很多人配完没反应,第一原因是 git config 指向了目录而非具体二进制文件。Windows 上是 BCompare.exe,macOS 是 BCompare.app/Contents/MacOS/BCompare,Linux 是 bcompare(需确保在 $PATH 中)。
验证方式:在终端运行 which bcompare(macOS/Linux)或 Get-Command BCompare.exe(PowerShell),确认能返回真实路径。
常见错误配置:
-
git config --global diff.tool beyondcompare—— 这只是声明工具名,没告诉 Git 可执行文件在哪 - 路径写成
C:\Program Files\Beyond Compare 4\(缺BCompare.exe) - macOS 上用了别名或软链但没指向
Contents/MacOS/BCompare
必须同时配置 diff 和 merge 工具才能支持比较与合并
VSCode 的「Git: Compare HEAD with Working Tree」走的是 git diff 流程,而解决冲突时调用的是 git mergetool,两者默认不共用同一套配置。只配一边,会发现一个能用、另一个报错或打开空白窗口。
正确做法(以 Windows 为例):
git config --global diff.tool beyondcompare git config --global difftool.beyondcompare.cmd '"C:/Program Files/Beyond Compare 4/BCompare.exe" "$LOCAL" "$REMOTE"' git config --global merge.tool beyondcompare git config --global mergetool.beyondcompare.cmd '"C:/Program Files/Beyond Compare 4/BCompare.exe" "$LOCAL" "$BASE" "$REMOTE" "$MERGED"' git config --global mergetool.beyondcompare.trustExitCode true
注意点:
-
$LOCAL/$BASE/$REMOTE/$MERGED是 Git 传给工具的固定占位符,大小写敏感,不能改 - 路径中含空格必须用双引号包裹整个命令,且内部反斜杠要转义或统一用正斜杠
-
trustExitCode true表示信任 Beyond Compare 的退出码(比如用户点了 Cancel),否则 Git 可能误判为冲突未解决
VSCode 内置的「Open Changes With...」菜单不走 git difftool,得关掉它
即使 Git 配置全对,右键文件选「Open Changes With Beyond Compare」仍可能失败——因为 VSCode 默认用自己封装的 diff provider,绕过了你配的 git difftool。这个行为由设置项 git.useEditorAsDefaultDiffTool 控制。
必须手动关闭:
- 打开 VSCode 设置(
Ctrl+,) - 搜
git.useEditorAsDefaultDiffTool - 取消勾选(设为
false)
之后「Open Changes With...」才会触发 git difftool,进而调用你配的 BCompare.exe。否则它会尝试用 VSCode 自己的文本比对,再强行塞给 Beyond Compare,导致文件内容错乱或乱码。
macOS 上 Gatekeeper 可能拦截首次启动,需手动授权
首次从命令行(包括 VSCode 调用)启动 BCompare,macOS 会弹窗提示“已损坏,无法打开”。这不是 Git 或 VSCode 的问题,而是 macOS 的安全机制。
临时绕过方法(仅首次):
- 打开访达,进入
/Applications/Beyond Compare.app - 右键 → 「打开」→ 点「仍要打开」
- 之后再通过
git difftool调用就正常了
如果跳过这步,你会看到终端卡住、VSCode 无响应,或者日志里出现 Operation not permitted 错误。这个步骤容易被忽略,尤其当 Beyond Compare 是从官网下载而非 App Store 安装时。
另外,macOS Catalina 及以后版本要求 BCompare 必须有「完全磁盘访问」权限(系统设置 → 隐私与安全性 → 完全磁盘访问),否则无法读取某些工作区文件。


















