按Ctrl+Shift+D(Win/Linux)或Cmd+Shift+D(macOS)打开源代码管理面板,再点击已暂存或未暂存的文件名即可查看与暂存区的diff;需确保Git仓库已初始化、文件被跟踪且已保存。

怎么用快捷键打开当前文件与暂存区的 diff 视图
直接按 Ctrl+Shift+D(Windows/Linux)或 Cmd+Shift+D(macOS)就能唤出“源代码管理”侧边栏,但这个快捷键本身不打开 diff——它只是打开面板。真正触发 diff 的动作是:在文件列表里**点击已暂存或未暂存的文件名**(带修改图标那个),VSCode 会自动在编辑器主区域打开该文件与暂存区的差异视图。
常见错误现象:Ctrl+Shift+D 按了没反应?大概率是因为 Git 扩展没启用、当前文件夹没初始化 Git 仓库,或者文件根本没被 Git 跟踪(git status 看不到它)。确认方式:看左下角状态栏有没有显示分支名,比如 main 或 master。
- 必须确保工作区根目录下有
.git文件夹,且 VSCode 是以该目录为工作区打开的 - 如果文件是新创建但还没
git add,它只会出现在“未暂存的更改”里;只有git add后,才能对比“暂存区 vs 工作区” - 快捷键本身不区分“暂存前/后”,具体对比哪两边,取决于你在源代码管理面板里点的是哪个区域下的文件
为什么点完文件有时只看到全量内容,而不是高亮差异
这是因为 VSCode 默认对“未暂存的更改”使用“工作区 vs 磁盘”对比(即你改了但没保存时,它对比的是内存缓存和磁盘文件),而只有点了“暂存的更改”里的文件,才真正走“暂存区 vs 工作区”逻辑。更关键的是:如果文件没保存,VSCode 会优先展示“未保存变更”,此时 diff 高亮可能不准甚至不出现。
- 务必先按
Ctrl+S(或Cmd+S)保存文件,再点源代码管理里的条目 - 如果仍看不到差异高亮,检查右上角是否误点了“Split Editor”按钮,导致 diff 被挤到另一个编辑器分组里
- 某些语言扩展(如 Prettier)开启“保存时格式化”后,可能造成瞬间保存→格式化→再保存,干扰 diff 状态,建议临时关掉该设置验证
命令面板里搜什么才能精准调出 diff
按 Ctrl+Shift+P(或 Cmd+Shift+P)打开命令面板,输入以下任一关键词即可直达:
-
Git: Open Changes—— 对当前活动文件,打开它与暂存区的 diff(最常用) -
Git: Open File in HEAD—— 直接打开该文件在最近一次 commit 中的内容(只读) -
Git: Compare with Unstaged Changes—— 这个其实是同义重复项,VSCode 1.85+ 已隐藏,别搜
注意:Git: Open Changes 命令依赖当前编辑器焦点在某个文件上;如果焦点在终端或设置页,它会报错“无法为未打开的文件执行此操作”。
diff 视图里那些箭头和颜色代表什么
左侧灰色块是暂存区内容(也就是你上次 git add 时的样子),右侧白色块是当前工作区内容。绿色背景行 = 新增,红色背景行 = 删除,黄色背景 = 行内修改(比如改了变量名但没动结构)。箭头方向表示变更流向:从左到右是“把暂存区改成这样”,从右到左是“把工作区改回暂存区样子”。
- 点左侧红色减号可以取消暂存这一块(相当于
git restore --staged <file>) - 点右侧绿色加号可以把这一块加入暂存(相当于
git add -p的单块暂存) - 如果某行只改了空格或换行符,VSCode 默认不显示差异,需在设置里开启
diff.ignoreTrimWhitespace设为false
容易被忽略的是:diff 视图里所有操作都只影响 Git 暂存区,不会自动保存文件,也不会触发 ESLint 或其他保存钩子——它就是一个纯粹的 Git 状态快照比对工具。


















