如果您对您创建分支(在您的本地存储库中)感兴趣,并且相关分支是在不久前创建的(少于 90 天)之前使用默认设置),您可以在其 reflog 中查看创建事件。
$ head -1 .git/logs/refs/heads/<branch_name>
000000... 4a28f1... J Hacker <joe@example.com> \
1400885439 +0200 branch: Created from HEAD
这里 SHA-1 标识符被缩短以提高可读性,并且显示的行是断开的 - 在实际输出中它是一条长行。
这里的时间是 UNIX 时间戳(自纪元以来的秒数)加上数字时区。您可以使用date 将其转换为人类可读的输出,例如:
$ date --date=@1400885439 --rfc-2822
Sat, 24 May 2014 00:50:39 +0200
$ TZ=GMT-2 date --date=@1400885439 --rfc-2822
Sat, 24 May 2014 00:50:39 +0200
不幸的是,从 git 版本 2.2.1 开始,没有漂亮的 reflog 日期格式。下面是迄今为止所有与 reflog 相关的漂亮格式:
- '%gD':引用日志选择器,例如,
refs/stash@{1}
- '%gd':缩短的引用日志选择器,例如,
stash@{1}
- '%gn': reflog 身份名称
- '%gN': reflog 身份名称(尊重 .mailmap,请参阅
- “%ge”:重新登录身份电子邮件
- '%gE':reflog 身份电子邮件(尊重 .mailmap,请参阅
- '%gs': reflog 主题
如果您对其他人创建了分支感兴趣,那么情况会更加困难。
首先,你只能找到分支fork from的提交,以及它的提交日期;该分支可以稍后创建。正如@Jubobs 在评论中所写,Git 不会记录分支的创建日期,除了 reflog(严格来说是本地的)。
其次,您还需要知道相关分支被分叉的分支(或一组分支);如果分支foo 在提交A 从分支bar 分叉,并且当分支bar 在提交A 从分支A 分叉时,存储库看起来完全相同(本地引用日志信息除外) .
假设有问题的分支是从集成分支之一派生的主题分支:maint、master 或 next,我们可以使用 git merge-base --all 找到共同祖先,然后使用适当格式的 git show查找提交日期,如下面的Mykola Gurov answer。例如:
$ echo maint master next |
while read -d ' ' branch; do
git merge-base --all $branch <branch_name>;
done | sort | uniq |
xargs git show -s --format=format:%ci