VS Code 本身并不保存或显示“Git冲突记录”——它只在冲突发生时实时标记当前未解决的冲突文件和块,不会回溯历史冲突。所谓“查看冲突记录”,实际是指定位、识别并进入正在发生的冲突状态。
冲突文件在哪看?源代码管理面板里的 Conflicted 分组
执行 git merge 或 git pull 触发冲突后,VS Code 会立刻在左侧“源代码管理”视图(Ctrl+Shift+G)中生成一个名为 MERGE CHANGES 的区域,下面列出所有带 Conflicted 标签的文件。
这些文件旁边会有一个红色感叹号⚠️,并标注冲突数量(如“3处冲突”)。点击任一文件,编辑器会自动跳转并高亮显示首个冲突块。
需要注意几点:
- 如果没看到 MERGE CHANGES 分组,说明 Git 没报告冲突(可能已自动合并,或者你尚未执行合并操作)
- 文件若只在 Changes 区显示但无 Conflicted 标签,那只是普通修改,不是冲突
冲突内容怎么呈现?三栏合并编辑器是默认视图
点击冲突文件后,VS Code 默认会以三栏“合并编辑器”打开(Current|Incoming|Result),而不是原始文本编辑器。
这个视图才是你真正“查看冲突”的地方:
Current栏显示你当前分支的代码(HEAD 所指版本)Incoming栏显示要合并进来的分支代码(比如feature/login的最新提交)Result栏是可编辑的输出区,你在这里决定最终保留什么- 每个冲突块用红/绿色边框加灰色背景高亮,左右差异一目了然
如果意外打开了纯文本视图(看到 <<<<< HEAD 这类标记),右键文件标签,选择 Open with Merge Editor 即可切回来。
为什么点不开冲突?检查 git.mergeEditor 设置是否启用
VS Code 1.69+ 版本才默认启用图形化合并编辑器;旧版本或被手动关闭时,冲突文件只会以普通文本打开。
确认设置已开启:
- 打开设置(
Ctrl+,) - 搜索
git.mergeEditor - 确保其值为
true(不是undefined或false) - 无需重启,改完即生效
顺带建议开启 git.inlineMergeControls:设为 true 后,冲突行末尾会出现 ✓ 当前、✓ 传入、✓ 两者 小按钮,不用拖到顶部也能快速操作。
想“回看”上次合并冲突?Git 本身不存日志,但可查提交元信息
Git 不记录“谁在哪次合并里遇到了什么冲突”,只保留最终合并提交对象。如果真想追溯某次合并的上下文:
- 用
git log --merges -n 5查最近 5 次合并提交 - 找到对应
commit hash后,运行git show看父提交(parent字段有两个 SHA) - 再用
git diff手动比对两分支分歧点——但这不是 VS Code 能图形化展示的内容
真正实用的做法是:把每次解决冲突的过程当作一次小范围代码评审,关注 Result 栏里你亲手敲下的每一行——那才是唯一值得“查看”的冲突记录。
