vscode合并编辑器需在git冲突文件上右键选“open in merge editor”触发,三栏分别代表current(当前分支)、incoming(待合入分支)和result(手动编辑的最终版本),解决后须执行git add标记暂存。

VSCode 内置的合并编辑器(Merge Editor)是处理 Git 合并冲突最直接、最可靠的 GUI 方案,无需额外插件即可开箱即用。
怎么触发合并编辑器?
当 git merge 或 git pull 产生冲突后,VSCode 会自动在源代码管理(Source Control)视图中标出冲突文件,图标为 ⚠️,状态显示 “Conflicted”。
- 点击该文件,VSCode 默认以三栏合并编辑器打开 —— 不需要手动配置或安装 GitLens 等插件(除非你有高级比对需求)
- 若未自动打开,右键文件 → “Open with Merge Editor” 即可强制启用
- 注意:
git rebase过程中产生的冲突同样适用此流程,但需确保已暂停 rebase(即看到rebase in progress提示)
合并编辑器里三个栏分别代表什么?
三栏结构不是装饰,每个区域承担明确语义:
- CURRENT:你当前所在分支的修改(即 HEAD 所指版本)
-
INCOMING:正被合并进来的分支内容(如
main或feature/login的最新提交) - RESULT:你正在构建的最终版本 —— 所有操作(点击按钮或手动编辑)都作用于此栏
冲突块会被灰色背景+红/绿边框高亮, 和 <code>>>>>>> branch-name 这类标记不会出现在编辑器中,它们已被 VSCode 隐藏并转为可视化区块。
监控一个或多个 GitCode 仓库的 PR,通过 OpenClaw Gateway 自动执行 AI 审查,发布 PR 评论,并发送钉钉和企业微信通知。
点按钮 vs 手动编辑,哪个更安全?
优先点按钮,但不能全信按钮 —— 尤其当逻辑依赖顺序时:
- → 按钮(Accept Incoming Change):把 INCOMING 内容插入 RESULT 当前光标位置
- ← 按钮(Accept Current Change):同理,插入 CURRENT 版本
- ↺ 按钮(Accept Both Changes):按 CURRENT + INCOMING 顺序拼接,不自动调整语义 —— 比如两个函数声明并列写入,可能造成重复定义
- 手动编辑 RESULT 栏时,可删掉冗余空行、调整参数顺序、补全缺失分号等,但切勿保留原始冲突标记(它们不会显示,也就无法“删”)
为什么保存后还报错?常见漏项清单
VSCode 会在关闭编辑器前校验,但只检查是否“移除了所有冲突区块”,不验证语法或逻辑。容易忽略的点:
- 多个冲突块分散在同一文件中,只解决了第一个,后面几个被滚动条遮挡没注意到
- 某次点击 ← 或 → 后,RESULT 栏出现重复 import 语句或 duplicate key 报错,但颜色高亮已消失,误以为“已解决”
- 合并后未执行
git add <file></file>—— VSCode 不会自动暂存,必须回到源代码管理视图点击 + 号或右键 “Stage Changes” - 提交信息留空直接点 ✓,导致
git commit失败,而 VSCode 不提示具体错误(需看底部状态栏或命令面板输出)
真正卡住的往往不是界面操作,而是没意识到 RESULT 栏改完只是“内容就绪”,后续的暂存和提交仍是独立步骤,且不可跳过。










