PhpStorm的Local History不记录操作者,只保存文件内容快照;查“谁改的”必须用Git日志或Annotate功能,因作者信息仅由Git维护。

PhpStorm 本身不记录“谁改的”,文件级作者追踪必须依赖 Git,Local History 只存快照、不存操作者。
为什么右键 Show History 看不到作者信息
Local History 是 PhpStorm 自动维护的本地二进制快照,它只保存「某个时间点这个文件的内容是什么」,不记录修改人、不记录操作类型(删/改/移)、也不关联系统用户或 Git 账号。所以无论你点多少次 Show History,列表里永远只有时间戳和描述(如 “Edited”),没有 author 字段。
常见错误现象:Cannot load history for file 或列表为空,往往是因为文件不在项目根目录下、被 Ignore files and folders 规则排除(如 node_modules/)、或从未保存过——这些都和作者无关,只是快照没生成。
- 文件刚从 Git 恢复(
git checkout)或复制进来?IDE 不认为它是“被跟踪的”,不会自动挂载历史 - 在
Project工具窗口里右键空白处点Local History → Show History,才能看到已删除文件的历史(前提是.idea/localHistory/还在) - 想确认某次修改是否出自自己之手?别查 Local History,直接去 Git 日志
用 Git Log 查“谁在什么时候改了这个文件”
Git 才是唯一能回答“谁改的”的权威来源。关键不是看单个文件右键菜单,而是打开完整日志视图,用过滤精准定位。
立即学习“PHP免费学习笔记(深入)”;
正确入口:Alt+9 打开 Version Control → Log 标签页,而不是对文件右键 → Show History(后者只显示该文件存在期间的提交,删了就断档)。
- 在 Log 窗口顶部点
Filter→ 勾选Author,输入姓名或邮箱关键词快速筛选 - 查某文件所有修改记录:在 Project 视图中选中该文件 → 右键 →
Git → Show History,新标签页会列出它全部的 commit,每条旁带 author 和时间 - 精准查删除行为:终端执行
git log --diff-filter=D --oneline -- <code>src/Config.php,D表示 Deleted - 如果文件已不在工作区,先跑
git log --all --diff-filter=D --name-only --oneline列出所有被删路径,再 grep 过滤
对比两个 Git 提交时怎么看到行级作者
Git 日志本身不显示每行作者,但 PhpStorm 的 Blame 功能可以。不过注意:Blame 是按行追溯最后修改该行的提交,不是“谁写了这行原始代码”。
- 在编辑器打开文件 → 右键 →
Git → Annotate(或快捷键Ctrl+Shift+A搜Annotate) - 左侧行号栏会显示每行最后一次变更的 commit hash、author、日期;悬停可看完整 message
- 点击某行的 hash → 自动跳转到 Log 窗口对应提交,右侧文件列表点该文件 → 右键 →
Compare with Current,就能看到那行是怎么变过来的 - 如果某行最近被多人连续修改,
Annotate只显示最后一次,要往前追得手动点前一个 hash 再Annotate
Local History 和 Git History 混用时的边界在哪
两者完全独立,但职责不能错配:Local History 是“键盘操作录像带”,Git History 是“协作事实账本”。容易忽略的关键点:
- Git 未
add或commit的修改,Local History 是唯一能恢复内容的途径,但它无法告诉你操作者是谁 - 你用
git rebase -i改写历史后,Git Log 里的 author 可能和实际不符,但Annotate仍基于物理 commit hash 生效 -
.idea/localHistory/被清理或磁盘满导致自动裁剪,5 天前的快照就没了;而 Git 日志只要.git在,永久可查 - 团队共用项目但有人不习惯
git commit?调大 Local History 保留天数(Settings → System Settings → Local History → Keep local history for (days))能兜底,但别指望它补全 author 字段


















