必须先切换到目标分支,否则合并无效;正确触发路径为源代码管理视图→Merge Branch或状态栏分支名右键→Merge from;三栏编辑器需满足git.mergeEditor启用、文件处于Unmerged paths等条件;Accept Both Changes仅拼接代码,关键融合须手动编辑Result区并git add。

必须先切换到目标分支,否则所有合并操作都无效——比如要把 feature/login 合进 main,你得先在状态栏点 main 并确认已检出,再发起合并。
怎么正确触发合并(不是点错菜单)
VSCode 的合并入口只有两个可靠路径,其他地方点基本没反应:
- 源代码管理视图(
Ctrl+Shift+G)→ 右上角⋯→Merge Branch→ 从列表选要合入的分支(如feature/user-auth) - 状态栏分支名 → 弹出菜单 → 找到待合并分支 → 右键 →
Merge from...(注意:这要求你当前已在目标分支) - 别在 Git Graph 插件里找“Merge”按钮——它是只读视图,不支持操作
为什么点了 Merge from 却没反应
常见原因全是状态没对齐:
- 状态栏显示的不是目标分支(比如你想合进
develop,但当前是main) - 当前工作区有未提交修改,VSCode 直接拦截切换,更不会允许合并
- 没提前运行
git fetch,远程分支列表滞后,origin/feature/x根本不显示在菜单里 - 项目根目录没打开(即没加载含
.git的文件夹),Git 集成压根没启动
冲突文件打不开三栏编辑器?检查硬性条件
三栏合并视图(Current / Incoming / Result)不是默认弹出的,它依赖几个开关同时为真:
-
git.mergeEditor设置必须为true(设置里搜这个关键词,旧版默认false) - 文件是纯文本且编码为
UTF-8;含GBK中文注释的文件会直接拒绝加载 - 终端执行
git status必须看到该文件处于Unmerged paths状态 - 最稳打开方式:
Ctrl+Shift+P→ 输入Merge Editor: Open Merge Editor→ 回车
Accept Both Changes 是个危险按钮
它只是把左边和右边代码上下拼起来,不校验逻辑、不查重复 import、不识别变量覆盖:
- 两边都加了
import axios from 'axios'→ 合并后报错 - 左边改
config.timeout = 5000,右边也改同一行 → Result 区出现两行赋值,后者生效但意图丢失 - 一个分支删了
if (x) { ... },另一个改了条件 → 拼接后语法崩坏 - 真正需要融合的地方(比如字段校验 + 返回结构调整),必须手动编辑中间 Result 区,删掉所有
<<<<< HEAD、=======、>>>>> feature/x
保存冲突文件只是改了内容,VSCode 不会自动 git add;没手动点 + 或执行 git add,就永远卡在未解决状态——这是最多人漏掉的一步。


















