local history是文件内容被清空后唯一靠谱的本地补救手段,只要文件曾被打开并触发自动保存或手动保存,timeline中带saved标签的快照即可恢复;若无反应,需排查是否为untitled临时文件、autosave关闭或路径被watcherexclude排除。

文件内容被清空(比如全选+Delete、Ctrl+A后按Backspace、粘贴覆盖)但文件还存在,这种情况 Local History 几乎是唯一靠谱的本地补救手段——它不依赖 Git,也不要求你手动保存过,只要文件曾被打开并触发过自动保存,快照就可能还在。
为什么 Open Timeline 没反应?先确认这三件事
Timeline 标签页空白或右键菜单里没有 Open Timeline,不是功能坏了,而是快照根本没生成:
- 文件是
Untitled-1这类未保存的临时文件:Local History 不记录,连路径都没有,直接跳过 -
files.autoSave被设为off,且你清空前没手动点过Ctrl+S:没落盘 = 没快照 - 该文件路径被
files.watcherExclude误排除(比如写了**或src/**):VSCode 根本不监听,自然不存历史
怎么快速定位到“删之前”的那个快照
Timeline 里时间戳多、条目杂,别靠猜。重点看这些标记和行为:
- 优先点开带
Saved标签的条目(不是Auto-saved):说明你明确执行过保存,内容最可信 - 如果没
Saved条目,找离清空操作时间最近的Auto-saved条目(VSCode 默认 1 秒延迟自动保存,files.autoSave设为afterDelay时才生效) - 右键任一历史条目 →
Compare with Current:能立刻看到差异高亮,确认是不是你要的版本,避免误恢复 - 别直接点
Restore:万一当前文件还有部分有效修改,覆盖就真丢了
restore 失败或恢复后内容不对?检查这些硬限制
即使 Timeline 显示了历史条目,Restore 也可能静默失败或只恢复部分内容:
-
files.localHistory.maxFileEntries默认是 50:如果这个文件近期改得特别勤,旧快照可能已被轮转淘汰 - SSD 上空间紧张时,VSCode 会主动清理
.history文件夹里的旧快照,尤其当磁盘使用率超 90% - 你清空后又手动生成过新内容(哪怕只输了一个字母),再恢复时 VSCode 会把“当前编辑器内容”当作基准,导致对比错乱
- 远程开发(SSH/WSL)时,快照实际存在服务端路径
~/.vscode-server/data/User/History,本地设置不生效,需确认服务端配置
Local History 不是时间机器,它只保存你“让 VSCode 看见”的那些状态。真正危险的是那种清空后顺手点了 Ctrl+S 的操作——那一刻,空文件就成了新的“已保存”版本,所有之前的快照都变成历史遗迹,再也无法一键覆盖回来。











