VSCode通过内置Git集成提供三路合并功能,无需插件或命令行:冲突时自动打开合并编辑器,支持快捷键接受当前/传入变更,手动编辑需清除所有冲突标记并执行git add才算解决,最终通过Git面板提交。
vscode 本身不提供独立的“合并工具”界面,但通过内置的 git 集成 + compare files + accept incoming/accept current 快捷操作,完全可以完成标准的三路合并(merge)与冲突解决——不需要装插件,也不用切到命令行。
Git 合并时自动弹出冲突编辑器
当你执行 git merge 或 git pull 触发冲突后,VSCode 会自动将有冲突的文件以「合并编辑器(Merge Editor)」形式打开,左侧是 Current Change(你本地的版本),右侧是 Incoming Change(要合并进来的版本),中间是合并结果预览区。
- 确保已启用:设置里搜索
git.mergeEditor,确认其值为true(VSCode 1.84+ 默认开启) - 若没弹出,右键冲突文件 → 选择
Open in Merge Editor - 注意:该视图只对 Git 标记为 conflicted 的文件生效,手动对比两个任意文件请用
File: Compare Active File With...
用快捷键或按钮快速接受某一方变更
在合并编辑器中,光标定位到某个冲突块(灰色背景 + /====/>>>> 区域),就能直接操作:
-
Ctrl+Alt+M(Windows/Linux)或Cmd+Alt+M(Mac)→ 打开冲突操作菜单 - 点击中间面板顶部的
Accept Current(保留你本地的)、Accept Incoming(采用对方的)、Accept Both(按顺序拼接) - 也可以右键冲突块 → 直接选对应选项;多次冲突可逐个处理,无需一次性决定
手动编辑合并结果时的关键约束
中间面板支持自由编辑,但必须删掉所有 Git 冲突标记(, ======, >>>> branch-name),否则 git add 会失败,并提示 fatal: cannot lock ref 类错误。
- 编辑完成后务必检查中间区域是否还有残留的冲突标记(哪怕只剩一行
>>>>) - 保存文件(
Ctrl+S)只是写入磁盘,不等于 Git 已标记为已解决;必须执行git add(右键文件 →Stage Changes)才算真正解决 - 如果误删了整个冲突块又想重来,可点击中间面板右上角的
Revert to Auto-merge按钮恢复初始三路状态
合并后验证与提交的最小闭环
所有冲突文件都 Stage 完毕后,VSCode 底部状态栏会显示「All changes staged for commit」,此时才能安全提交:
- 点击左下角 Git 图标 → 点击
Commit按钮(或按Ctrl+Enter) - 提交信息建议保留默认生成的
Merge branch 'feature-x' into main,不要清空 - 若中途想中止合并:终端运行
git merge --abort,VSCode 会自动关闭合并编辑器并恢复工作区
真正容易被忽略的是:VSCode 的合并编辑器不会帮你判断逻辑是否正确,它只负责结构化呈现和搬运代码。比如两个分支都改了同一个函数的返回值,它会把两段都列出来,但选哪个、要不要改第三种写法,得你人工判断——这时候别急着点 Accept Both,先看懂两边改了什么。









