git reflog
记录 HEAD 和分支引用的所有变更历史,可用于恢复误操作丢失的提交
语法
git reflog [show] [<options>] [<ref>]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
show |
显示引用日志(默认操作) | |
常用 |
--all |
显示所有引用的日志 | |
常用 |
-n <number> |
限制显示条数 | |
常用 |
expire --expire=<time> |
清理指定时间之前的记录 | |
常用 |
--date=relative |
显示相对时间 | |
常用 |
示例
查看 HEAD 的变更历史
git reflog
abc1234 HEAD@{0}: commit: feat: 添加搜索
def5678 HEAD@{1}: checkout: moving from main to feature
789abcd HEAD@{2}: reset: moving to HEAD~1
查看 main 分支的引用变更历史
git reflog show main
恢复到 3 步操作之前的状态
git reset --hard HEAD@{3}从 reflog 中找到的提交创建恢复分支
git checkout -b recover-branch abc1234
用相对时间显示(如 2 hours ago)
git reflog --date=relative
技巧
- reflog 是 Git 的「后悔药」,几乎所有误操作都能通过它恢复
- git reset --hard 后丢失的提交可以通过 reflog 找回
- reflog 记录默认保留 90 天,之后会被垃圾回收清理
- 误删分支后用 git reflog 找到分支最后的 commit hash 即可恢复