是否有一种方法可以确定Git分支是何时创建的?我在我的repo中有一个分支,我不记得创建了它,我想也许看到创建时间戳会唤醒我的记忆。


当前回答

我找到了最好的方法: 我总是检查用这种方法创建的最新分支

git for-each-ref --sort=-committerdate refs/heads/

其他回答

首先,如果你的分支是在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作为替代。

这就是格培根在他的回答中所说的。

Use

git show --summary `git merge-base foo master`

如果您更愿意使用gitk在上下文中查看它,那么使用

gitk --all --select-commit=`git merge-base foo master`

(foo是你要找的分支的名称。)

我找到了最好的方法: 我总是检查用这种方法创建的最新分支

git for-each-ref --sort=-committerdate refs/heads/

(10年后)

git log [--remotes] --no-walk --decorate

由于没有存储关于分支创建时间的信息,因此它所做的是显示每个分支的第一次提交(——no-walk),其中包括提交日期。对于远程分支使用——remotes,对于本地分支省略它。

因为在创建另一个分支之前,我至少要在一个分支中提交一次,这允许我追溯几个月的分支创建(和特性开发启动),以用于文档编制。

来源:stackexchange上的AnoE

这是我在发现这条线索之前想到的。

git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1
git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep 'branch:'