Local History 是 PhpStorm 独立于 Git 的自动快照机制,仅记录已索引文件的编辑事件,保存在 .idea/localHistory/ 下,受自动保存设置、目录排除规则和保留天数限制,不可替代版本控制。

Local History 本质是 IDE 自动存档,不是 Git
PhpStorm 的 Local History 是独立于 Git 的本地快照机制,它不依赖仓库状态,也不需要你执行 git add 或 commit。只要文件在项目中被打开、编辑、保存(或触发自动保存),IDE 就会在 .idea/localHistory/ 下按时间戳生成二进制快照。但注意:它只记录「已纳入项目索引」的文件——比如你新建一个 test.php 后没保存就关掉,或者该文件根本不在当前项目目录下,那它压根不会进 Local History。
“Show History” 找不到修改记录的常见原因
右键文件 → Local History | Show History 空白或只有几条老记录?大概率是以下之一:
-
Settings | Appearance & Behavior | System Settings中关闭了Save files on frame deactivation和Save files automatically when application is idle,导致未显式保存的内容没被快照捕获 - 项目刚导入或索引损坏,
.idea/localHistory/目录为空或权限异常(尤其 WSL 或 Docker 挂载卷场景) - 你操作的是临时文件(如
Scratch)、外部库文件、或位于Excluded目录中的文件 —— 这些默认不参与 Local History - 快照保留天数被调得太短:
Settings | Editor | Local History中的Keep local history for (days)设为 1,而你昨天改的代码今天就看不到了
恢复误删文件或回退某次编辑的关键操作
别只盯着单个文件右键菜单。更有效的路径是:
- 在项目根目录或父文件夹上右键 →
Local History | Show History,能看到整个目录树的变更汇总(包括新建/删除/重命名) - 在
View | Recent Changes里筛选Deleting类型,能快速定位刚删掉的文件夹(比翻时间线快得多) - 选中某条历史记录 → 右键 →
Revert:这会把「该时间点之后的所有变更」逆向打补丁,不是覆盖式还原;若想彻底回到那个版本,得先Revert再手动丢弃后续编辑 - 对已删除文件恢复:先在项目里手动新建同名文件(哪怕空文件),再对该文件执行
Show History→ 找到删除前的快照 →Revert
Local History 不可靠时的兜底策略
它不是备份工具,而是开发过程中的临时缓存。真正关键的代码,必须依赖 Git:
立即学习“PHP免费学习笔记(深入)”;
- 新文件写完第一行就
git add,哪怕还没提交 —— Git index 至少保住了文件内容 - 禁用
Settings | Version Control | Git | Update method中的On commit自动推送,避免手抖push错分支后连本地都救不回 - 定期执行
git stash+git stash pop可强制触发一次干净快照,比等 IDE 自动更可控 - 如果
.idea/localHistory/被误删,重启 PhpStorm 并等待索引重建(状态栏显示 “Indexing…” 完成后才会重新开始记录)
Local History 的快照粒度是「编辑事件」而非「代码行」,它无法恢复某一行被覆盖前的值 —— 那得靠 Git diff 或启用 Settings | Editor | General | Editor Tabs | Mark modified tabs with asterisk 来提醒你及时提交。


















