首页/开发/Git 与协作速查/git reflog 引用日志
Git 基础与命令88 条

git reflog 引用日志

记录 HEAD 与分支指针的每次移动:误重置、误删分支后的找回线索,默认保留 90 天(可配置)。

Git 与协作速查开发更新于 2026-10-13

git reflog 是什么

git reflog 记录 HEAD 与分支指针的每一次移动:提交、切换分支、重置、变基、合并都会留下一条记录。它是本地操作日志,也是误操作之后的第一手救援线索——误 reset、误删分支、变基失败之后,往往都能在这里找到原来的位置。

为什么它能救回提交

Git 的提交对象不会因为指针移开就立刻消失,只是变成没有引用的悬空对象。reflog 保存着这些指针曾经指向的位置,相当于给了你一台时间机器:找到那一刻的哈希,再把它重新变成分支,或者直接重置过去即可。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
保存位置.git/logs/ 下的引用日志
默认保留约 90 天,由 gc.reflogExpire 控制
常用写法git reflog、HEAD@{3}、git reflog show <分支>
典型用途找回误操作的提交与分支尖端
是否分发本地数据,不随仓库同步

典型使用场景

  • 救援误重置:reset --hard 之后找回被丢弃的提交
  • 恢复误删分支:找到分支尖端哈希重新建分支
  • 查看轨迹:确认自己刚才究竟执行了哪些操作
  • 变基失败:回到变基开始之前的位置
  • 定位悬空提交:结合对象检查确认丢失内容的归属

常用示例

常用示例
git reflog                       # 查看 HEAD 的移动记录
git reflog show main             # 只看某条分支的记录
git reflog --date=iso | head     # 带时间戳查看最近几条
git reset --hard HEAD@{3}        # 回到三步之前的位置
git branch rescue HEAD@{5}       # 用历史位置建一条救援分支
git log -g --oneline -10         # 以图形方式查看引用日志

常见记录与含义

记录片段含义用法
commit一次新提交确认提交是否已生成
checkout切换分支查看分支切换轨迹
reset指针被重置找回重置前的位置
rebase变基相关操作确认变基的起点
branch -D删除分支找到被删分支的尖端
误执行 reset --hard 之后,用 reflog 找到重置前的那条记录,再 reset 回去或者拉成一条救援分支即可。
reflog 是本地数据,不随仓库分发,找回只对本机有效;超过保留期或被清理之后,记录就会消失。

易错点

  • reflog 是本地数据,不随仓库分发,找回只对执行操作的那台机器有效
  • 超过保留期或被清理之后记录消失,重要操作后应尽早确认状态
  • 以为 reflog 能找回未提交的工作区改动,实际上这类内容从未进入对象库
  • 在别人的机器或新克隆的仓库里想找回自己的误操作,reflog 不会有对应记录

数据来源与参考

  • Git 官方文档:git-reflog
  • Pro Git 2nd Edition · 10.4 维护与数据恢复
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌