vscode无内置文件备份功能,找不到.backup或.history副本是因为其files.autosave仅覆盖原文件,不生成.bak等副本;所谓恢复依赖backups/目录下哈希命名的内存快照(不可读、不可回溯),而local history扩展才在项目根目录生成可读.time-stamped .history/副本,需手动安装启用。

VSCode 本身没有文件备份功能,所谓“备份保存策略”必须靠外部机制实现;直接修改 files.backup 或期待自动生成 .bak 文件会失败。
为什么找不到 .backup 文件或 history 副本?
VSCode 不像 Vim、Sublime Text 那样生成 file.js~ 或 .file.py.swp 类型的备份文件。它的 files.autoSave 只覆盖原文件,不创建副本。你看到的「恢复未保存文件」提示,来自内存快照(Backups/ 目录下的哈希命名临时文件),不是可读、可回溯的源码备份。
-
Backups/目录路径:Windows 是%APPDATA%\Code\Backups\,macOS 是~/Library/Application Support/Code/Backups/,Linux 是~/.config/Code/Backups/ - 这些文件名是随机哈希值,无法对应原始文件名,也不能直接打开查看内容
- 若禁用
files.hotExit或该目录权限异常/被清空,崩溃后将彻底无恢复能力
Local History 扩展才是最接近“自动备份”的方案
它在项目根目录下静默生成 .history/ 子目录,每次保存前存一份带时间戳的副本,不依赖 Git,右键即可恢复。
- 安装扩展
Local History(作者:Zhang Heng 或 xyz)后默认启用,无需额外配置 - 快照路径为
.history/<relative-path>@<timestamp>.js</timestamp></relative-path>,人类可读、可手动复制 - 保留天数由
local-history.maxFileHistory控制(单位:天),默认 30 天 - 注意:
.history/不应加入.gitignore——它不参与提交,但若被误删,快照即永久丢失 - 只监控「已打开并被自动保存过」的文件;新建未保存的
Untitled-1不会被记录
Git 提交才是防丢的底层保障
VSCode 的自动保存和 Local History 都解决不了「逻辑错误覆盖」问题(比如手滑删了关键函数却没察觉)。真正可靠的版本锚点,只能是 git commit。
- 初始化仓库:
git init,哪怕不 push,本地 commit 就是可回退的快照 - 配合
git.enableSmartCommit: true,右键文件可一键暂存+提交 - 避免把
.vscode/settings.json加入.gitignore——它控制着团队协作一致性 - 多根工作区下,
Local History默认按工作区隔离;若用git worktree,需手动设local-history.historyPath避免混存
最容易被忽略的一点:VSCode 对符号链接(symlink)目标文件不触发 files.autoSave,也不会发出 inotify 事件——这意味着基于文件系统监听的备份工具(如 rsync --inotify)可能完全收不到通知。











