Merge-Conflict 插件不显示对比框是因为与 VSCode 1.84+ 原生 git.mergeEditor 冲突;插件被绕过,控制权归原生三栏合并编辑器所有,需禁用插件并确认 git.mergeEditor 为 true。

为什么 Merge-Conflict 插件的对比框根本不出现在编辑器里
不是插件坏了,而是它和 VSCode 原生 Git 集成冲突了。Merge-Conflict 是个老插件,依赖旧版内联冲突渲染逻辑;而 VSCode 1.84+ 默认启用原生 git.mergeEditor,会接管所有冲突文件的打开行为——插件的 UI 层直接被绕过,连按钮都不加载。
你看到的“没反应”“点不动”“顶部没提示条”,本质是 VSCode 已经把文件交给了自己的三栏合并编辑器,插件压根没拿到控制权。
- 检查
git.mergeEditor是否为true(设置里搜该配置项):是 → 插件失效是预期行为 - 禁用插件后手动运行
Git: Open Merge Editor,如果能正常打开三栏视图 → 确认是插件兼容问题 - 插件作者未更新适配(最新发布于 2022 年),官方已明确不推荐与原生合并编辑器共存
想用三向对比,必须关掉 Merge-Conflict 插件
强行保留插件只会导致行为混乱:比如冲突标记显示两套(原生灰色高亮 + 插件红色背景)、Accept 按钮重复出现、中间结果区编辑后不响应 git add。
- 在扩展面板中禁用或卸载
Merge-Conflict插件 - 重启 VSCode,确保
git.mergeEditor为true - 执行一次真实冲突(例如
git merge feature/x),观察是否自动弹出三栏视图 - 若仍不弹出,检查工作区根目录是否有
.git,且文件编码是否为UTF-8(GBK 中文注释会导致中栏加载失败)
原生 Merge Editor 里没有 Accept 按钮?先确认光标位置
原生合并编辑器的按钮不是常驻的——它只在光标进入冲突块(即灰色高亮区域,含 到 >>>>> branch-name 的整段)时才浮现在中间面板顶部。键盘跳转、鼠标点击空白处、或光标停在非冲突行,按钮都会消失。
- 把光标移到
行任意位置,按钮立刻出现 - 快捷键
Ctrl+Alt+M(Win/Linux)或Cmd+Alt+M(Mac)可强制唤出操作菜单,无需依赖鼠标悬停 - 右键冲突块内部 → 直接弹出上下文菜单,含
Accept Current Changes、Accept Incoming Changes、Accept Both Changes
Accept Both Changes 按钮点了就完事?危险信号
这个按钮只是字符串拼接,不做任何语义判断。它不会帮你去重 import、不会识别重复的 const 声明、不会校验 if 分支嵌套是否错位。点完立刻保存,大概率触发 ESLint 报错或运行时崩溃。
- 两边都写了
import { api } from './services'→ 中间区出现两行,编译失败 - 左边删了
console.log,右边加了try/catch→ 拼一起后try包不住原逻辑,错误吞没 - 真正要融合的场景(如一方加参数校验、另一方改返回结构),必须手动编辑中间面板,删冲突标记、重写逻辑、补缺失变量
- 保存前务必执行
npm run lint或 VSCode 内置语法检查,否则git add成功也不代表代码可用
原生 Merge Editor 的三栏结构本身没问题,问题常出在「以为点完按钮就解决」和「忘了 git add」这两步。一个冲突文件,删完所有 /=======/>>>>> 标记只是第一步,右键文件点 Stage Changes 才算真正告诉 Git:这个冲突我认领并处理完了。











