vscode本地历史记录默认存于工作区根目录的.history/文件夹,但应通过timeline面板恢复而非手动操作,因其文件名经uri编码、结构易变、快照只读;timeline需满足文件在工作区内、已保存、未被watcher排除且localhistory.enabled为true;remote ssh下历史位于远程服务器~/.vscode-server/data/user/history/;默认保留30天内最多50个快照。

VSCode 本地历史记录默认存在工作区根目录下的 .history/ 文件夹里,但你几乎不应该手动去翻它——界面入口更可靠、更安全。
为什么别直接打开 .history/ 目录手动恢复
这个目录里的文件名是 URI 编码 + 时间戳格式(比如 src%2Futils.js%2F2024-06-01T10-23-45.123Z.json),不是原始文件名;结构随 VSCode 版本变化,第三方插件或清理工具可能误删其中内容;且快照是只读的,复制回来后若不立刻保存,下次编辑保存会覆盖它。真正该依赖的是 VSCode 自带的 Timeline 面板,它自动解析并展示可读的时间点。
Open Timeline 找不到菜单?先确认三个硬条件
右键文件或文件夹看不到 Open Timeline,大概率不是功能坏了,而是没满足触发前提:
- 文件必须在当前工作区(即你用
File → Open Folder…打开的整个项目)内,且曾被 VSCode 编辑并保存过(Ctrl+S) - 该路径不能被
files.watcherExclude排除(比如"**/node_modules/**"是默认排除项,改了也不会存) -
files.localHistory.enabled必须为true(默认开启,但有人会关掉)
如果只是右键空白处没反应,试试右键目标文件所在的父文件夹——有时单个文件没加载完,父文件夹反而能唤出 Timeline。
文件已删,但 VSCode 还开着:用命令面板绕过资源管理器
资源管理器里找不到文件?没关系,只要还记得名字,就能调出它的历史记录:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS) - 输入
Timeline: Open Timeline,回车 - 在左上角搜索框里输文件名关键词(支持模糊匹配,如输
api可列出api.ts、apiClient.js) - 找到时间点后,点右侧
Restore按钮——注意:它会直接覆盖当前编辑器内容,不是新建标签页
如果当前编辑器是空的(比如你刚删完又关了文件),VSCode 会先创建一个新标签页再填入历史内容。
Remote SSH 场景下,历史记录不在你本地电脑上
用 Remote SSH 连服务器开发时,.history/ 不在你本机,而在远程服务器的:~/.vscode-server/data/User/History/。这个目录下每个子目录对应一个工作区,里面是 entries.json 和一堆随机命名的快照文件。不要手动改它——Ctrl+Shift+P → Timeline: Open Timeline 同样可用,只是所有操作都走远程连接。如果连不上服务器,那本地历史就真没了,得靠服务器系统级快照(如 btrfs snapshot)或备份。
最常被忽略的一点:VSCode 的本地历史不是“永久保险柜”。它默认只保留最多 30 天、每个文件最多 50 个快照;如果你昨天改完就关了 VSCode,且之后没再打开过那个文件,它的快照大概率已被自动清理。别等丢了才试,现在就按 Ctrl+Shift+P → Timeline: Open Timeline 点开任意一个文件看看有没有记录——有,才说明机制在跑。











