Local History是IDE自动维护的本地快照机制,非Git功能,可恢复未提交代码;它独立于版本控制,触发于保存/编辑等操作,保留默认5天,但依赖IDE配置与文件保存状态。

Local History 不是 Git,但它能救你于“手抖删错”“改乱又想不起来原样”的瞬间——只要文件没被 PhpStorm 彻底删除或重命名,它基本都留有快照。
Local History 和 Git History 的根本区别
Local History 是 PhpStorm 自己在本地磁盘(.idea/workspace.xml 附近)维护的变更快照,和 Git 无关。它不依赖仓库、不提交、不推远程,也不记录 commit message。Git 没 push 的修改丢了?Local History 可能还在;但如果你清空了 .idea 目录或重装 IDE,这些记录就没了。
- Git History:靠
git log,记录的是已暂存/提交的版本,需手动操作 - Local History:自动触发(保存、编辑、重构等),每分钟最多存 1 个快照,最多保留 5 天(可调)
- 两者可并存:右键文件 →
Git | Show History看 Git 提交;右键文件 →Local History | Show History看本地快照
怎么精准定位某次误操作前的代码状态
别盲目翻时间线。先确认你改的是哪个文件,再用「范围筛选 + 差异比对」快速锁定:
- 对单个文件右键 →
Local History | Show History,弹出窗口里默认按时间倒序排列 - 双击某一条记录,打开「差异查看器」——左边是当前内容,右边是历史快照,增删行高亮清晰
- 右上角勾选
Show only changed files(如果批量改过多个文件) - 时间戳旁有操作类型提示,如
Changed content、Renamed、Deleted,优先点开带Changed content的条目 - 如果记不清改哪行,先用
Ctrl + Shift + E打开「最近修改的文件」列表,缩小目标范围
为什么有时 Local History 里找不到刚改的代码
不是 Bug,是触发机制和配置限制导致的。常见原因如下:
立即学习“PHP免费学习笔记(深入)”;
- 文件刚创建还没保存过(.php 文件必须至少执行过一次
Ctrl + S,Local History 才开始跟踪) - 该文件被标记为「excluded」:右键文件 →
Mark as Plain Text或项目设置里加到了Excluded目录,IDE 就不会为其生成快照 - IDE 设置中禁用了 Local History:进入
File | Settings | Appearance & Behavior | System Settings,检查Local History下的Keep history for是否为 0 天,或Save all files automatically被关闭且你忘了手动保存 - 磁盘空间不足或
.idea/shelf/目录被清理过(Local History 快照实际存在.idea/shelf/子目录中)
恢复时容易忽略的关键细节
点击差异查看器右下角的 Revert 按钮确实能回退,但要注意:
-
Revert是覆盖式写入——它会把当前文件全部替换成快照内容,包括你之后新增但未保存的改动,也会一并丢掉 - 如果只想恢复某几行,别点
Revert,直接在差异视图右侧(历史版)选中要恢复的代码段,Ctrl + C复制,切回主编辑器粘贴 - 恢复后记得立刻
Ctrl + S,否则下次保存可能又被覆盖(因为 Local History 快照是基于上次保存点生成的) - 项目级恢复(整个目录):在项目根目录右键 →
Local History | Show History,支持多选快照批量Revert,但务必确认路径和影响范围
Local History 的价值不在“全量备份”,而在“秒级后悔药”。它不替代 Git,但补足了 Git 无法覆盖的编辑间隙——比如改了 3 行、没暂存、关了 IDE,第二天打开发现逻辑崩了,这时候翻 Git log 是空的,而 Local History 往往还静静躺在那里。


















