VSCode源代码管理面板不显示冲突文件,通常因Git未检测到冲突或状态未刷新;需手动刷新或运行Git: Refresh命令,冲突文件归类于“Merge Changes”节,须通过git status确认后手动打开并解决,再暂存提交。

为什么VSCode的源代码管理面板里看不到冲突文件?
通常是因为Git没检测到冲突,或者工作区状态没刷新。执行 git status 后如果显示 both modified,但VSCode左侧源代码管理(SCM)面板仍为空或只显示“Changes”,说明VSCode没自动同步状态。此时手动点击面板右上角的刷新按钮(↻),或按 Ctrl+Shift+P(Windows/Linux)/ Cmd+Shift+P(macOS)运行 Git: Refresh 命令即可。
冲突文件在SCM面板中显示为“Merge Changes”但点不开?
这是VSCode默认把合并冲突归类到“Merge Changes”节,而非普通“Changes”。它不展开文件列表,也不支持双击跳转——这不是bug,是设计限制。必须先在终端执行 git status 确认具体冲突文件(如 src/utils.ts),再在VSCode资源管理器中手动打开该文件,编辑器底部状态栏才会出现“Accept Current Change / Accept Incoming Change / Accept Both Changes”等操作按钮。
点击“Accept Incoming Change”后代码没变?
常见原因有三个:
- 当前文件未处于Git跟踪状态(比如刚新建未
git add),VSCode不会启用合并控件 - 冲突标记(
和 <code>>>>>>> branch-name)被手动删掉但没保存,VSCode仍认为处于冲突中 - 你正在编辑的不是工作区根目录下的真实文件(例如通过符号链接打开、或打开了副本),VSCode无法关联Git索引
最稳妥的做法:关闭所有编辑器标签页 → 在资源管理器中重新打开冲突文件 → 确保底部状态栏显示冲突操作按钮 → 再点选任一选项。
解决完所有冲突后,为什么还卡在“Merge Changes”里?
VSCode不会自动把已解决的文件移出“Merge Changes”节,它只依赖Git索引状态。必须手动运行 git add <file></file> 或在SCM面板顶部点击“+”号(Stage Changes)将文件暂存。只有当所有冲突文件都 git add 后,再执行 git commit,VSCode才会清空“Merge Changes”并恢复常规视图。漏掉任一文件,面板就一直保留该区域,且提交按钮呈灰色不可点。
冲突解决不是点几下按钮就完事的事——它依赖Git索引、工作区文件状态、VSCode缓存三者严格一致。任何一步脱节,界面就“装死”。多看一眼 git status 输出,比反复点刷新按钮管用得多。


















