我第一次参加在线课程学习 Git。在课程中,讲师使用 P4merge 作为 difftool 和 mergetool。不过,我正在使用 Visual Studio Code。使用 Visual Studio Code 作为 difftool 可以正常工作,但不能作为合并工具。我一直在网上寻找答案,但没有运气。
这是我调用 mergetool 时终端中发生的情况的屏幕截图。
它没有打开 Visual Studio Code,而是给我一个错误。
对于 MacOS 用户:
code
不在您的 PATH 中,因此当 git 尝试使用命令 code
执行 VSCode 时,它找不到它。Shell Command: Install 'code' command in PATH
code
安装到您的 PATH 并解决您的问题。
我假设您在 gitconfig 中添加了以下配置
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
您遇到的错误
command not found
是因为您没有将 vscode 二进制文件导出到 $PATH。尝试做类似的事情(我使用的是Mac)
export PATH=$PATH:/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/
并且您应该能够使用
git mergetool
在 Vscode 中打开。
虽然从 VSCode 1.70/1.73 开始支持合并,并且 官方文档 仍然引用完整的 mergetool.code
命令 (
code --wait --merge $REMOTE $LOCAL $BASE $MERGED
),但您现在有一个更简单的设置:
git config --global merge.tool=vscode
假设您的 code
可执行文件位于您的
PATH
中,那就足够了。使用 Git 2.47(2024 年第 4 季度),
第 14 批,“git mergetool
提交 6b77283(2024 年 9 月 1 日),作者:Alex Henrie (alexhenrie
)。
gitster
--合并于 commit d1ea0f7,2024 年 9 月 10 日)
mergetools
:vscode:新工具签字人:Alex Henrie
VSCode 自 2022 年起支持三向合并,请参阅问题 5770。 虽然程序二进制文件位于
/usr/bin/code
,但将合并工具命名为“vscode”,因为“code
”这个词太通用,会导致混乱。名称“vsenter code here
code”也与 Git 现有的contrib/vscode
目录. 匹配 在 Windows 上,VSCode 将包含 code.cmd 的目录添加到
%PATH%
,因此无需调用mergetool_find_win32_cmd
来搜索程序。