必须点击“STAGED CHANGES”区域才能查看暂存区差异,因其默认折叠且需手动展开;文件须先执行git add并保存,VSCode才可正确对比工作区与暂存区。

VSCode 不需要额外插件就能查看 Git 暂存区差异——内置 Git 集成已完全支持,装插件反而可能干扰原生行为或引入兼容性问题。
为什么点“STAGED CHANGES”才看到暂存区 diff
VSCode 的源代码管理视图里,“CHANGES”和“STAGED CHANGES”是两个物理隔离的区域。默认只展开前者(未暂存),后者被折叠在底部,不手动滚动或点击就不可见。
- 常见错误:点了“CHANGES”里的文件,结果右侧全是空白或只有全量内容——那是在对比工作区 vs 磁盘缓存,不是 vs 暂存区
- 必须先执行
git add <file>,文件才会出现在“STAGED CHANGES”列表中 - 文件修改后务必按
Ctrl+S(或Cmd+S)保存,否则 VSCode 对比的是内存快照 vs 磁盘,不是工作区 vs 暂存区 - 左下角状态栏没显示分支名(如
main),说明当前窗口没识别为 Git 仓库根目录,.git文件夹可能不在打开的文件夹里
用命令面板精准触发「工作区 vs 暂存区」对比
右键菜单和图标点击容易误触到其他命令(比如 Git: Open Changes 实际对比的是工作区 vs HEAD)。最稳的方式是调出命令面板,输入完整命令名:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(Mac) - 输入
Git: Compare Working Tree with Index(注意别缩写成 “compare index”,部分主题下匹配不到) - 执行后自动打开 diff 编辑器:左侧是暂存区(上次
git add的快照),右侧是当前工作区 - 如果编辑器已打开目标文件,直接加载;否则弹出文件选择器,且只列出已暂存的文件
diff 视图里怎么才算真正把改动加入暂存区
在 Git: Compare Working Tree with Index 打开的视图中,逻辑不是“选中→点击暂存”,而是“把右边改的内容复制到左边”:
- 左侧灰色块 = 暂存区内容(只读)
- 右侧白色块 = 当前工作区改动(可编辑)
- 行号左侧出现
>箭头,点击即可将该行从右侧“同步到左”——等价于对这一行执行git add -p - 想整块暂存?右键右侧内容 →
Stage Line或Stage Hunk(取决于你启用了行级暂存) - 千万别直接编辑左侧——它不可写,强行改也不会写入暂存区
最容易被忽略的一点:VSCode 的 diff 视图本身不自动提交或推送,它只是个只读快照对比工具;真正影响 Git 索引的操作(比如点击 >、右键 Stage)必须发生在该视图内,而不是在普通编辑器里保存文件。


















