VSCode 的 diff 视图是内存中实时计算的临时界面,不生成任何磁盘文件;所谓“历史比对文件”实为 GitLens 或 Local History 等插件所存快照(如 .history/ 或 .vscode/.gitlens/history/),可用 files.exclude 隐藏,但不影响核心功能。

VSCode 本身不“保存”或“生成”历史版本差异比对文件——你看到的 diff 视图是实时计算、只存在于内存中的临时界面,关掉标签页就彻底消失,不存在需要手动隐藏的“.diff”文件或缓存目录。
为什么你找不到可隐藏的“比对文件”
所谓“历史版本差异比对”,本质是 VSCode(配合 Git 或插件如 GitLens/Local History)在需要时动态拉取两个版本内容(比如 HEAD:src/api.ts 和工作区 src/api.ts),送入内置 vscode.diff 编辑器渲染。整个过程不写磁盘、不生成中间文件、不创建新文件条目——资源管理器里自然看不到任何叫 “diff”、“compare” 或 “history-xxx” 的文件。
常见误解来源:
- 误把 GitLens 时间线里显示的“本地快照”当成真实文件(其实是插件在
.history文件夹里存的副本,路径类似.git/history/xxx或.vscode/.local-history/xxx,但这些不属于 VSCode 原生机制) - 看到右上角 diff 编辑器有 “Accept” 按钮,以为会生成 patch 文件(不会,除非你主动右键 → “Save As…”)
- 以为 Local History 插件生成的快照该被
files.exclude管理(它默认存在项目根下.history/,可隐藏,但那是插件行为,不是 VSCode 自身的“比对文件”)
如果你真想隐藏 Local History 生成的快照目录
Local History 插件(如 xyz.local-history)为未提交改动自动保存快照,默认放在项目根目录下的 .history 文件夹。这个目录会出现在资源管理器中,你可以用 files.exclude 把它藏起来:
- 打开项目根目录下的
.vscode/settings.json - 添加配置:
{ "files.exclude": { "**/.history": true } } - 保存后,
.history文件夹立刻从资源管理器消失(不影响插件功能) - 注意:
"**/.history"必须带**/前缀,否则只匹配根目录下的同名文件夹
GitLens 的时间线快照要不要隐藏?
GitLens 默认不落地存储快照——它直接从 Git 对象数据库读取历史版本,不生成额外文件。但如果你启用了它的「Local History」增强选项(如设置 gitlens.localHistory.enabled),它可能在 .vscode/.gitlens/history/ 下存内容。这时同样可用:
-
"**/.vscode/.gitlens/history": true加进files.exclude - 别加
"**/.vscode/**"这种粗暴规则,否则会一并隐藏settings.json和调试配置 - GitLens 本身不依赖该目录可见性,隐藏后时间线功能照常运行
真正需要警惕的,是误以为“隐藏了比对文件”就能释放磁盘空间或提升性能——diff 视图本身无存储开销;而插件产生的历史快照,删或不删、藏或不藏,只影响你眼睛看不看得见,不影响 VSCode 核心 diff 逻辑的轻量与即时性。











