直接按Ctrl+Shift+D(Win/Linux)或Cmd+Shift+D(macOS)打开源代码管理视图,点击“CHANGES”中未暂存文件名即可查看工作区(右)与暂存区(左)差异;若无对比,多因文件未被Git跟踪、误点“STAGED CHANGES”区域或换行符/空格等隐藏差异导致。

VSCode里怎么快速对比暂存区和工作区文件?
直接按 Ctrl+Shift+D(Windows/Linux)或 Cmd+Shift+D(macOS)打开源代码管理视图,点击左侧“CHANGES”区域中任意一个已修改但未暂存的文件名,右侧编辑器会自动显示工作区(右)与暂存区(左)的差异——这是 VSCode 默认行为,不需要额外插件。
为什么点开文件后看不到左右对比?
常见原因是该文件**尚未被 Git 跟踪**(即从未 git add 过),或者当前处于“未暂存更改”列表但你误点了“暂存的更改”区域。VSCode 只对已跟踪且有暂存/未暂存状态差异的文件启用双栏对比。
- 检查文件是否在
.gitignore中被忽略 - 运行
git status确认该文件确实出现在 “Changes not staged for commit” 下 - 确保没误点“STAGED CHANGES”分组里的文件(那显示的是暂存区 vs HEAD)
想用快捷键直接唤起对比面板,不点鼠标?
VSCode 没内置单键触发“工作区 vs 暂存区”对比的快捷键,但可以自定义:
- 打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P) - 输入并选择
Preferences: Open Keyboard Shortcuts (JSON) - 添加如下条目(注意替换
alt+e为你习惯的组合键):
[
{
"key": "alt+e",
"command": "git.diff",
"when": "scmProvider == 'git' && scmResourceState == 'modified'"
}
]
这个 git.diff 命令在当前聚焦的修改文件上,强制拉起工作区 vs 暂存区对比——前提是该文件确实在 SCM 视图中处于“modified”状态。
对比时发现内容完全一样,但 git status 显示已修改?
大概率是换行符(CRLF/LF)或结尾空格导致的假差异。VSCode 默认隐藏这些,但 Git 会记录。
- 打开设置,搜索
files.eol,设为\n统一 LF - 开启
files.trimTrailingWhitespace并勾选files.insertFinalNewline - 执行
git config --global core.autocrlf true(Windows)或input(macOS/Linux)
这类差异不会影响代码逻辑,但会让 git diff 和 VSCode 对比看起来“有变化”,实际只是 Git 的元信息层面差异。


















