如何按最近提交时间排序列出 Git 分支

按最近提交排序列出分支:git for-each-ref --sort=-committerdate refs/heads/ --format 自定义输出;远程分支换 refs/remotes/。简版用 git branch --sort=-committerdate。适合清理久未更新的陈旧分支。

最佳实践
Git 提交历史与版本恢复示意

用 git for-each-ref --sort=-committerdate:- 前缀表示倒序(最新的在前),配合 --format 自定义输出字段。简单场景 git branch --sort=-committerdate 也行,但 for-each-ref 的格式控制更强大。

常用命令

# 本地分支按最近提交倒序
git for-each-ref --sort=-committerdate refs/heads/   --format='%(committerdate:short) %(refname:short)'

# 包含远程分支
git for-each-ref --sort=-committerdate refs/heads/ refs/remotes/   --format='%(committerdate:iso8601) %(refname:short) %(authorname)'

# 简版
git branch --sort=-committerdate

常用格式字段

字段 含义
%(refname:short) 分支短名
%(committerdate:iso8601) 提交时间(ISO 格式)
%(authorname) 作者
%(subject) 提交说明首行
%(upstream:short) 跟踪的远程分支

实用场景:清理陈旧分支

# 找出 90 天没有提交的分支
git for-each-ref --sort=committerdate refs/heads/   --format='%(committerdate:short) %(refname:short)' | head -20

配合 git branch --merged 筛出已合并的,可以列一份"安全删除候选清单"。

常见问题(FAQ)

Q:committerdate 和 authordate 有什么区别?

author 是代码"写"的时间,committer 是提交"产生"的时间(rebase/amend 会更新后者)。看分支活跃度用 committerdate 更准。

Q:能输出成别的格式吗(如 JSON)?

Git 2.38+ 支持 --format='%(refname)' 的 shell/python 引用风格,脚本里处理建议用 %(refname)|%(committerdate:unix) 这类分隔符格式再解析。

Q:想直接看图形化分支时间线?

git log --oneline --graph --all --date-order 更适合看分支之间的关系;for-each-ref 适合出清单报表。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台