VSCode中误删文件可按Ctrl+Z/Cmd+Z秒恢复(未保存前);Git跟踪文件用Discard Changes恢复;本地Timeline可还原30天内编辑过的文件;系统级删除需立即停写并用Recuva等工具抢救。

刚删完就发现——立刻按 Ctrl+Z 或 Cmd+Z
这是唯一能“秒回”的方式,但只在删除操作后、没做其他编辑或保存的前提下有效。VSCode 的撤销栈会记录文件级操作(包括资源管理器里右键删除),所以哪怕你删的是整个文件,只要还没关标签页、没切窗口、没点保存,Ctrl+Z 仍可能把它拉回来。
容易踩的坑:
• 删完顺手按了 Ctrl+S —— 这会固化删除状态,撤销失效
• 在多个编辑器标签间切换过,或打开了命令面板(Ctrl+Shift+P),部分版本中会清空撤销历史
• macOS 上误用 Ctrl+Z(应为 Cmd+Z),毫无反应却不自知
文件还在资源管理器里显示为“已删除”——用 Git Discard 恢复
如果你用 Git 管理项目,且被删的文件曾被跟踪(即进过 git add),它不会真正消失,而是留在“Changes”列表里,标为 deleted。这时恢复最快:
• 打开源代码管理面板(Ctrl+Shift+G)
• 在 CHANGES 区域找到该文件
• 点击文件名右侧的三个点图标 → 选第二个(Discard Changes)→ 确认 Restore File
注意:
• 如果文件从未被 git add 过(比如新建后直接删了),Git 根本不认它,这招无效
• 若已执行过 git clean -f 或 git reset --hard,该文件可能从暂存区也被清掉了,需查更早提交
文件彻底不见了,但 VSCode 还开着——试试 Open Timeline
VSCode 本地历史(Local History)会在后台自动保存文件快照,即使没开 Git,只要文件曾被打开并编辑过,就可能留有副本。
实操路径:
• 在资源管理器中,**右键被删文件原所在的父文件夹**(不是空白处,不是回收站)→ Open Timeline
• 时间线里找删除前最近的一条记录
• 右键该条目 → Revert Change,或拖拽内容到编辑器手动复制
关键限制:
• 默认只保留 30 天,且按磁盘空间自动清理;SSD 空间吃紧时旧记录会被优先丢弃
• 不适用于未打开过的文件(比如新建后直接右键删除、全程没点开过)
• 路径 ~/.vscode-server/data/User/History(远程开发时)或 %APPDATA%\Code\User\History(Windows)里可能存有缓存,但不建议手动翻,结构不稳定
文件既没进 Git,也没进 Timeline——只剩系统级补救
这种情况本质是操作系统级删除:文件 inode 被标记为可覆盖,但数据块尚未被新内容覆盖。恢复成功率取决于是否写入新数据、文件大小、磁盘类型。
可行动作:
• 立即停止向该磁盘写入任何大文件(别下载、别编译、别保存其他项目)
• Windows 可试 Recuva(免费),勾选“深度扫描”,目标定位到项目目录
• macOS 若开了 Time Machine,直接进备份时间点还原整个文件夹
• Linux(ext4)可用 debugfs 手动提取 inode,但需记住被删文件的原始路径和大致创建时间,且必须在未卸载分区下操作
现实提醒:
• VSCode 自身不存完整文件副本,所谓“缓存恢复”仅对曾被打开并触发过自动保存的文件有效
• git fsck --unreachable 对未跟踪文件基本无用,别浪费时间
• 第三方工具如 git-undel 或 git-fs 均非官方支持,依赖文件系统日志,成功率低且不可控
真正卡住人的,往往不是“怎么恢复”,而是“删之前它到底有没有被 Git 跟踪过”——这个状态一眼看不出,得靠 git status 或看资源管理器里有没有 Git 图标。预防永远比抢救便宜:新建项目第一件事,就是 git init && git add . && git commit -m "init"。










