VSCode本地历史空白因.history文件夹丢失或异常;它仅保存近期快照,依赖工作区根目录下的.hidden文件夹,需手动检查并重建目录、调整设置、禁用冲突插件来恢复记录。

VSCode 本地历史(Local History)突然空白或不记录
VSCode 的本地历史功能默认开启,但不会永久保存——它只保留最近几天的修改快照,且依赖工作区根目录下的 .history 文件夹。一旦该文件夹被误删、权限异常、磁盘空间不足或 VSCode 异常退出,历史记录就会丢失,Ctrl+Shift+P → "Developer: Show Local History" 就会显示为空。
-
.history文件夹默认位于当前工作区根目录下(如/project/.history/),不是全局路径;切换工作区或打开单个文件(非文件夹)时,本地历史可能完全不生效 - VSCode 不会为未保存的编辑器标签页生成历史快照;只有执行过
Ctrl+S(保存)后,才会在下次保存前/后触发一次快照捕获 - 如果启用了
"files.hotExit": "onExitAndWindowClose"或设置了"workbench.startupEditor": "none",可能干扰快照触发时机
如何确认本地历史是否真的在运行
直接检查 .history 目录是否存在、是否有子目录和 .json 快照文件是最可靠的方式。VSCode 不提供“历史服务状态”面板,一切以文件系统为准。
- 打开终端,进入你的工作区根目录,运行:
ls -la .history/
(macOS/Linux)或dir .history
(Windows) - 正常情况下应看到类似
src%2Findex.ts%2F2024-05-22T14-32-18.123Z.json的编码文件名——这是 URI 编码后的路径 + ISO 时间戳 - 若目录为空或不存在,说明快照未生成或已被清理;此时即使界面里能点开“Local History”,也只会显示“No local history available”
恢复或强制重建本地历史的实操方法
本地历史不可“恢复已删除的快照”,但可以立即重建后续记录。关键是确保 VSCode 持续写入 .history,且不被外部工具干扰。
- 关闭所有 VSCode 窗口,手动创建空的
.history目录:mkdir .history
,并确认其权限允许当前用户读写(尤其在 WSL 或 Docker 挂载卷中) - 在
settings.json中显式启用并调大保留窗口:"workbench.localHistory.enabled": true,
"workbench.localHistory.maxFileEntries": 50,
"workbench.localHistory.exclude": [] - 禁用可能冲突的插件:如
Local History(第三方同名插件)、GitLens(旧版本曾劫持保存钩子)、Auto Save类插件(若设为afterDelay且延迟过长,会导致快照间隔拉长甚至跳过) - 重启 VSCode,打开一个已保存的文件,做一次修改 +
Ctrl+S,再等待 2–3 秒,刷新.history/目录,应能看到新生成的快照文件
为什么 Git 提交记录不能替代本地历史
Git 只记录已 git add + git commit 的内容,而本地历史捕获的是任意保存时刻的完整文件状态(包括未暂存、未提交、甚至未纳入 Git 跟踪的临时修改)。两者粒度与用途完全不同。
- Git 提交是离散的、需主动操作;本地历史是连续的、自动的,适合回滚“刚删掉的 10 行代码”这类高频小误操作
- 若你习惯用
git stash或频繁git add -u,反而可能掩盖真正需要本地历史的场景——比如调试时反复改又撤回、临时注释整块逻辑等 - 注意:
.history不受.gitignore影响,但会被.vscode/settings.json中的workbench.localHistory.exclude过滤;例如加入"**/node_modules/**"后,对应路径下的修改就不再记录
rsync / Time Machine 做文件系统级快照。VSCode 的这个功能,只负责帮你多留几秒钟的后悔时间。










