VSCode误删文件可恢复,前提是文件曾被打开并保存过;需用File: Open Local History命令查找快照,Restore前必须Compare with Current验证内容,远程开发快照位于服务端~/.vscode-server/data/User/History。

VSCode 误删的“本地缓存文件”本身不是独立实体,它只是编辑器自动保存的历史快照(Local History),恢复关键在于找对路径、用对命令、别跳过验证步骤。
Timeline 快照不显示?先确认文件是否满足触发条件
VSCode 的 Timeline 功能不会为所有文件生成记录。常见失效原因包括:
- 文件是
Untitled-1类未保存的临时文件 —— Timeline 完全不记录; - 文件从未被打开并编辑过(比如只右键 → Delete,但没点开过);
- 你清空过
%APPDATA%\Code\User\History(Windows)或~/.vscode-server/data/User/History(远程开发),快照物理丢失; - 文件所在磁盘空间严重不足,VSCode 自动清理了旧快照(默认保留最多 50 个版本,且仅最近 30 天)。
如果 Timeline 标签页压根没出现,不要反复刷新,直接转向其他路径。
文件已从资源管理器消失,但 VSCode 还开着:用 File: Open Local History
这是原生功能,不依赖 Git,也不要求文件被提交过,只要它曾被 VSCode 打开并保存过一次,就可能有快照。操作比 Timeline 更底层、更可靠:
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS); - 输入
File: Open Local History,回车; - 列表里会显示按路径分组的历史条目,即使当前磁盘上已无该文件,VSCode 仍尝试匹配路径名;
- 逐个点击预览,确认内容是你删掉前的版本;
- 点右上角
Restore按钮,它会在原路径重建文件(若父目录已删,需手动创建)。
注意:Open Local History 和 Timeline: Open Timeline 是两个不同机制,前者查的是 User/History 目录下的原始快照,后者是 UI 层聚合视图,有时前者能找回后者找不到的版本。
远程开发环境(如 SSH/WSL)下缓存文件在哪?别手动翻目录
远程服务器上的快照实际存在 ~/.vscode-server/data/User/History,但结构是哈希命名的嵌套目录,entries.json 里才存有 resource(原路径)和 source(内容)。手动翻效率极低,且容易误判:
- 不要直接在终端
ls -la后靠名字猜文件; - 优先走
File: Open Local History命令,它内部已做了路径映射; - 如果命令面板也搜不到,说明该文件未被记录 —— 可能是新建后未保存就删,或编辑器崩溃导致快照未落盘;
- 此时唯一补救是:立刻停止写盘,用
PhotoRec(Linux/macOS)或Recuva(Windows)扫描磁盘,但恢复出的文件无原名,需按扩展名(如.ts、.py)人工筛选。
为什么 git restore 对不上?检查文件是否真被 Git 跟踪
很多人以为“项目用了 Git”,删的文件就一定能用 git restore 拉回来,其实不然:
-
git status不显示该文件 → 它是untracked(从未git add或提交),Git 完全不知情; - 删完又执行过
git clean -f或git reset --hard→ 暂存区和工作区都被清空,快照链断裂; - 文件刚新建、编辑、保存,但还没运行
git add→ 它只存在于 VSCode 缓存中,Git 无任何副本。
真正能靠 Git 救回来的,只有那些 git status 明确列出为 deleted: 的条目。这时候去源代码管理面板(Ctrl+Shift+G)点 Discard Changes,本质执行的是 git restore --staged --worktree <file></file> —— 其他情况,Git 不参与。
最易被忽略的一点:VSCode 的“本地缓存”不是备份服务,它只为已打开并保存过的文件服务,且生命周期受磁盘空间与用户清理行为直接影响。一旦发现误删,别先关编辑器、别急着重启、别盲目运行清理命令 —— 这三步做完,90% 的缓存快照就不可逆了。



















