news 2026/8/1 23:41:18

git reflog用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
git reflog用法

git reflog用法

文章目录

  • git reflog用法
      • 1. 如何浏览(显示)更多条目
      • 2. 如何显示更详细的信息
      • 3. 如何让 Reflog 保存更久(为什么旧的记录会消失?)
      • 总结

默认情况下,git reflog会在一个分页器(比如less)中显示,你可能以为它只显示了一屏的内容。实际上它记录了很多,只是需要你浏览。

下面我将从如何浏览更多如何显示更详细的信息,以及如何让 reflog 保存更久三个方面来详细解答。


1. 如何浏览(显示)更多条目

默认的git reflog行为很像git log,如果内容超过一屏,它会自动进入一个可滚动的视图。

  • 向下滚动:按键或Space(空格键) 翻页。
  • 向上滚动:按键或b键。
  • 退出浏览:按q键。

如果你想一次性在终端里看到所有 reflog 记录(不进入分页器),可以使用--no-pager参数:

git--no-pager reflog

这会将所有 reflog 历史直接打印到你的终端里,你可以自由地上下滚动查看。

如果你只想看指定数量的最近记录,可以使用-n--max-count参数:

# 显示最近的 30 条记录gitreflog -n30# 或者gitreflog --max-count=30

2. 如何显示更详细的信息

默认的git reflog输出格式非常简洁。你可以让它显示更多有用的信息,比如确切的时间

显示相对时间 (e.g., “2 hours ago”)

gitreflog --date=relative

输出示例:

a1b2c3d (HEAD -> main) HEAD@{2 hours ago}: pull: Fast-forward f4e5d6c HEAD@{1 day ago}: commit: My last work before pull

显示标准格式的绝对时间

gitreflog --date=iso

输出示例:

a1b2c3d (HEAD -> main) HEAD@{2023-10-27 15:30:00 +0800}: pull: Fast-forward f4e5d6c HEAD@{2023-10-26 11:20:00 +0800}: commit: My last work before pull

使用git log -g(终极技巧)

git reflog实际上是git log -g --abbrev-commit --pretty=oneline的一个别名。git log -g(或--walk-reflogs) 是更强大的命令,它允许你使用git log所有强大的格式化功能来展示 reflog!

例如,你想看一个更详细、更美观的 reflog,可以这样做:

# -g 就是 --walk-reflogs 的缩写# --pretty=... 自定义格式gitlog -g --pretty=format:'%h %gd %ar: %gs'
  • %h: 缩短的 commit 哈希
  • %gd: reflog 选择器,如HEAD@{0}
  • %ar: 相对时间
  • %gs: commit 信息的第一行

这个命令的输出会非常清晰,强烈推荐:

a1b2c3d HEAD@{0} 2 hours ago: pull: Fast-forward f4e5d6c HEAD@{1} 1 day ago: commit: My last work before pull g7h8i9j HEAD@{2} 2 days ago: commit: Some older work

3. 如何让 Reflog 保存更久(为什么旧的记录会消失?)

你可能会发现非常非常久远的操作在reflog里找不到了。这是因为 Git 会定期“清理”过期的 reflog 条目,以防止仓库文件无限增大。

这个清理行为由两个配置项控制:

  1. gc.reflogExpire: 针对可达 (reachable)的 reflog 条目。这些是你当前分支历史中还能访问到的 commit。默认是90天
  2. gc.reflogExpireUnreachable: 针对不可达 (unreachable)的 reflog 条目。比如你reset --hard丢弃的、或者rebase掉的旧 commit。这些是你最可能需要 reflog 来恢复的!默认是30天

这些清理操作通常在git gc(garbage collection, 垃圾回收) 时触发。

如何查看当前的配置?

gitconfig --get gc.reflogExpiregitconfig --get gc.reflogExpireUnreachable

如何延长保存时间?

如果你希望 reflog 保存更长时间(比如半年),可以修改这个配置。

# 将不可达条目的保存时间延长到 180 天# --global 参数会对你系统上所有的 git 仓库生效gitconfig --global gc.reflogExpireUnreachable"180 days"# 如果只想对当前这个项目生效,去掉 --globalgitconfig gc.reflogExpireUnreachable"180 days"

你甚至可以设置为never来永不过期,但这通常不推荐,因为它会让你的.git目录持续膨胀。

# 不推荐:除非你有特殊理由,否则不要这么做gitconfig gc.reflogExpire"never"

总结

你的需求推荐命令说明
浏览所有记录git --no-pager reflog一次性打印所有 reflog,方便在终端里滚动。
只看最近几条git reflog -n 20显示最近的 20 条记录。
显示更友好的时间git reflog --date=relative将时间戳显示为 “2 hours ago” 这种形式。
显示最详细的信息git log -g --pretty=format:'%h %gd %ar: %gs'终极大法,结合git log的格式化功能,输出清晰。
延长 reflog 保存期git config gc.reflogExpireUnreachable "180 days"让 “后悔药” 的保质期更长,例如从 30 天延长到 180 天。

希望这些信息能帮你更好地使用git reflog这个强大的工具!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 19:43:23

超融合基础架构揭秘:一篇文章读懂分布式存储与计算虚拟化

在数字化转型的浪潮中,企业对IT基础设施的要求日益严苛——既要支撑业务的快速扩张,又要控制运维成本;既要保证数据安全可靠,又要具备灵活的资源调度能力。传统IT架构在这些需求面前逐渐显露短板,而超融合基础架构&…

作者头像 李华
网站建设 2026/7/30 22:09:30

很严重了,年底大家别轻易离职。。

2025年的裁员潮比寒冬更凛冽。。。被裁的人焦虑面试,在职的人忧心忡忡,生怕下一个优化名单里有自己。IT圈的震动早就藏不住了——之前没掌握AI技能的员工,已经成了裁员的重点对象;打开招聘软件发现,Java岗位的要求早已…

作者头像 李华
网站建设 2026/7/31 22:20:28

SpringBoot+Vue 网购平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

摘要 随着互联网技术的快速发展和电子商务的普及,网购平台已成为人们日常生活中不可或缺的一部分。传统的线下购物模式逐渐向线上转移,消费者对便捷、高效的购物体验需求日益增长。在此背景下,开发一个功能完善、用户体验良好的网购平台具有重…

作者头像 李华
网站建设 2026/8/1 13:54:55

重拳出击!中医馆利用中医AI助手四诊仪引流,竟如此神奇!

当下中医馆竞争激烈,“引流难、留客难、拓客贵”成普遍痛点。发传单、低价团购、网红探店等传统手段多收效甚微,要么成本高,要么吸引的是低质量“一次性客流”。但近期不少中医馆靠“中医ai助手”成功破局,客流翻倍、口碑暴涨。这…

作者头像 李华
网站建设 2026/7/31 23:50:07

云服务器适合搭建哪些网站?从个人博客到企业级应用的全面解析

在数字化浪潮席卷全球的2025年,许多开发者和企业主面临着一个关键抉择:究竟哪些类型的网站最适合部署在云服务器上?我曾亲眼见过一位创业者因为选错了服务器类型,导致网站在流量激增时彻底崩溃,损失了宝贵的客户和声誉…

作者头像 李华
网站建设 2026/7/30 1:36:17

uniapp vue3的ts页面初始化模板代码

uniapp vue3的ts页面初始化模板代码 在 UniApp 中使用 Vue 3 和 TypeScript 可以大大提升开发效率和代码质量。下面是一个完整的页面初始化模板,以及一些关键的最佳实践,帮助你快速上手。 下面是一个基础的页面模板示例,您可以直接复制使用&a…

作者头像 李华