是否有一种方法可以确定Git分支是何时创建的?我在我的repo中有一个分支,我不记得创建了它,我想也许看到创建时间戳会唤醒我的记忆。
当前回答
语法: Git reflog——date=local | grep checkout: | grep ${current_branch} | tail -1
例子: Git reflog——date=local | grep checkout: | grep dev-2.19.0 | tail -1
结果: cc7a3a8ec HEAD@{Wed Apr 29 14:58:50 2020}: checkout:从dev-2.18.0移动到dev-2.19.0
其他回答
试试这个
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)'
正如在评论和Jackub的回答中指出的那样,只要你的分支比配置设置gc中设置的天数更年轻。Reflogexpire(默认值是90天),然后您可以使用reflog来查找分支引用第一次创建的时间。
注意,git reflog可以接受大多数git日志标志。进一步注意,HEAD@{0}样式选择器是有效的时间概念,实际上是作为日期字符串处理的(以一种hack的方式)。这意味着你可以使用标记——date=local并得到如下输出:
$ git reflog --date=local 763008c HEAD@{Fri Aug 20 10:09:18 2010}: pull : Fast-forward f6cec0a HEAD@{Tue Aug 10 09:37:55 2010}: pull : Fast-forward e9e70bc HEAD@{Thu Feb 4 02:51:10 2010}: pull : Fast forward 836f48c HEAD@{Thu Jan 21 14:08:14 2010}: checkout: moving from master to master 836f48c HEAD@{Thu Jan 21 14:08:10 2010}: pull : Fast forward 24bc734 HEAD@{Wed Jan 20 12:05:45 2010}: checkout: moving from 74fca6a42863ffacaf7ba6f1936a9f228950f657 74fca6a HEAD@{Wed Jan 20 11:55:43 2010}: checkout: moving from master to v2.6.31 24bc734 HEAD@{Wed Jan 20 11:44:42 2010}: pull : Fast forward 964fe08 HEAD@{Mon Oct 26 15:29:29 2009}: checkout: moving from 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 4a6908a HEAD@{Mon Oct 26 14:52:12 2009}: checkout: moving from master to v2.6.28
有时使用——date=relative也很有用:
$ git reflog --date=relative 763008c HEAD@{4 weeks ago}: pull : Fast-forward f6cec0a HEAD@{6 weeks ago}: pull : Fast-forward e9e70bc HEAD@{8 months ago}: pull : Fast forward 836f48c HEAD@{8 months ago}: checkout: moving from master to master 836f48c HEAD@{8 months ago}: pull : Fast forward 24bc734 HEAD@{8 months ago}: checkout: moving from 74fca6a42863ffacaf7ba6f1936a9f228950f657 to master 74fca6a HEAD@{8 months ago}: checkout: moving from master to v2.6.31 24bc734 HEAD@{8 months ago}: pull : Fast forward 964fe08 HEAD@{11 months ago}: checkout: moving from 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 to master 4a6908a HEAD@{11 months ago}: checkout: moving from master to v2.6.28
最后注意:——all标志(实际上是git-reflog理解的git-log标志)将显示refs/中所有已知引用的reflogs(而不是简单的HEAD),这将清楚地显示分支事件:
git reflog --date=local --all 860e4e4 refs/heads/master@{Sun Sep 19 23:00:30 2010}: commit: Second. 17695bc refs/heads/example_branch@{Mon Sep 20 00:31:06 2010}: branch: Created from HEAD
如果您想获得所有分支的详细信息
for i in `git branch -r | tail -n +2 `;do git log --reverse $i|grep -A 2 -B 2 `echo $i | awk -F'origin/' '{print $2}'` |head -n 4; done
如何通过Github GUI知道
我展示了所有的答案,没有人用UI给出答案。如果有人想看到分支是通过Github UI创建的。
进入洞察标签。 在侧栏中选择Network选项卡。
您可以看到分支的创建,如下所示
首先,如果你的分支是在gc中创建的。Reflogexpire days(默认90天,即大约3个月),你可以使用git log -g <branch>或git reflog show <branch>来查找reflog中的第一个条目,这将是创建事件,看起来如下(对于git log -g):
Reflog: <branch>@{<nn>} (C R Eator <creator@example.com>)
Reflog message: branch: Created from <some other branch>
你会得到谁创建了一个分支,多少操作之前,以及从哪个分支(好吧,它可能只是“created from HEAD”,这没有多大帮助)。
这就是迈克塞普在他的回答中所说的。
第二,如果你的分支长于gc。如果你已经运行了git gc(或者它是自动运行的),你必须找到与创建它的分支的共同祖先。看一下配置文件,可能有分支。归并项,它会告诉你这个是基于哪个分支的。
如果你知道有问题的分支是从主分支创建的(从主分支分叉),例如,你可以使用下面的命令查看共同祖先:
git show $(git merge-base <branch> master)
你也可以尝试git show-branch <branch> master作为替代。
这就是格培根在他的回答中所说的。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式