vscode需通过git显式配置为合并工具:执行git config --global merge.tool vscode和git config --global mergetool.vscode.cmd 'code --wait --merge $base $local $remote $merged',确保code在path中且使用--wait --merge参数,再运行git mergetool触发四窗格视图。

VSCode 本身不“配置为”冲突解决工具,而是 Git 需要被明确告知:用 code 命令 + --wait --merge 参数来启动 VSCode 的四窗格合并视图。关键不是装插件或点设置开关,是让 Git 能调起它、等你关掉窗口后再继续。
git config 必须设对的两个核心项
执行以下两条命令(全局生效):
git config --global merge.tool vscodegit config --global mergetool.vscode.cmd 'code --wait --merge $BASE $LOCAL $REMOTE $MERGED'
注意三点:
-
--wait缺失会导致 Git 立刻认为合并完成,你还没点保存,Git 就已退出,后续git commit会报错 “No merge in progress” -
--merge是硬性要求,没有它 VSCode 只会打开四个独立文件,不会进入带 BASE/LOCAL/REMOTE/MERGED 标签的专用视图 - 变量名大小写敏感:
$BASE不是$base;Windows Git Bash 下可能需写成\$BASE防止 shell 提前展开
code 命令必须在终端里可用
如果运行 git mergetool 报 command not found: code,说明 VSCode 的命令行工具没注册进系统 PATH。
- 在 VSCode 中按
Ctrl+Shift+P(macOS 为Cmd+Shift+P),输入Shell Command: Install 'code' command in PATH并回车 - 关闭并重开终端,运行
code --version验证是否返回版本号 - 若仍失败,检查你用的是哪个 shell(
echo $SHELL),把安装命令补到对应配置文件(如~/.zshrc或~/.bash_profile)里再source
触发时别跳过 git mergetool 这一步
很多人卡在这儿:pull 出现 conflict 后,直接双击文件用 VSCode 打开 —— 这只是普通编辑,根本不会激活合并模式。
- 必须先确认
git status显示 “Unmerged paths”,且文件在 “MERGE CHANGES” 区域 - 然后只运行
git mergetool,看到提示 “Hit return to start merge tool” 后再回车 - 此时 VSCode 才会以
--merge模式启动,显示四窗格界面;关掉窗口后 Git 自动继续流程 - 如果点了 “Accept Current Change” 却没反应,大概率是没走
git mergetool,而是手动打开了文件
最易被忽略的一点:VSCode 的合并视图只响应 git mergetool,和源代码管理面板里的 “Accept” 按钮是两套机制。前者用于复杂冲突或需要三方比对的场景,后者适合快速单块文本决策——但无论哪种,git add 这步都绕不开。











