git本身不记录分支创建时间,唯一可靠方法是通过git reflog查找branch: created from条目对应的时间戳,但仅限本地未过期(默认90天)的记录;其他方法如git for-each-ref或git log --reverse均只能近似估算且易失真。

Git 本身不记录分支创建时间,所谓“创建时间”只能靠间接方式还原,且多数方法只对本地分支有效、有时间窗口限制。
git reflog 是唯一能接近真实创建时刻的方法
reflog 记录的是本地分支指针(refs/heads/xxx)每次被设置或移动的操作日志,其中 branch: Created from 类型的条目就对应分支诞生动作。
- 运行
git reflog --date=iso refs/heads/feature/login,查找含branch: Created from的行,其时间戳即为创建时间 - 若分支是从远程创建的,可能显示为
branch: Created from origin/main,时间仍可信 - reflog 默认保留 90 天,超过后
git gc或手动git reflog expire会清除,不可恢复 - 该方法完全不依赖提交内容,哪怕分支创建后还没任何 commit,也能查到
git for-each-ref --sort=creatordate 只显示指针最后更新时间
git for-each-ref --sort=creatordate --format='%(creatordate:iso8601) %(refname:short)' refs/heads/ 看起来很准,但实际返回的是该分支引用最后一次被写入的时间——不是创建,而是任意一次移动(比如 git reset、git merge、git rebase 都会刷新它)。
监控一个或多个 GitCode 仓库的 PR,通过 OpenClaw Gateway 自动执行 AI 审查,发布 PR 评论,并发送钉钉和企业微信通知。
- 如果分支自创建以来从未被重置或合并过,这个时间才勉强可用
- 执行过
git branch -f feature/login HEAD~3后,creatordate就变成那次强制重设的时间,和原始创建无关 - 远程分支不能直接用此命令查,需改用
refs/remotes/origin/xxx,但 remote ref 的 creatordate 实际是本地 fetch 时更新的,非远端创建时间
git log --reverse 只能查首次提交时间,不是分支创建时间
用 git log --reverse origin/feature/login | head -n1 得到的是该分支上第一个 commit 的 author date。这在绝大多数情况下等于创建时间,但存在明显偏差场景:
- 分支从历史提交切出:如
git checkout -b old-fix v1.2.0~5,首次提交可能是 2 年前的,但分支是昨天建的 - 分支创建后 cherry-pick 过旧 commit,log 里最早的那个 commit 时间就完全失真
- 多人协作中,别人向该分支 push 过提交,你本地没 fetch,
git log查到的就不是完整首提时间
真正可靠的分支“生日”,只有 reflog 能给;一旦 reflog 清理,就再无办法回溯——Git 的设计决定它不存这个元信息,所有替代方案都是妥协。如果你需要长期追踪,得靠外部机制,比如 CI 流水线自动打标签、或 Git hooks 记录分支操作到数据库。










