如何从远程获取git分支的创建时间?

时间:2018-07-05 11:22:01

标签: git

我想知道分支的创建时间。 而且我不能使用'git reflog',因为分支只是从远程签出的。因此,在本地只有我结帐的补充。 我使用git log并获得了大量日志,包括其他分支。 我如何获得时间?

1 个答案:

答案 0 :(得分:2)

git不会跟踪分支的创建时间。最接近的是,如果您对提交拓扑进行了某些假设,则可以检查第一次提交似乎与分支相关的日期。

假设你有

x -- o -- x -- x <--(master)
      \
       A -- B -- c <--(feature)

现在看来feature是在o创建的,然后A被提交给feature的似乎是“显而易见的”(随后是B和{ {1}})。不一定是正确的,并且git不会跟踪任何会告诉您是否正确的信息,因为在git中,分支只是指向单个提交的指针(约定通常在添加提交时会以某种方式移动)。在这种情况下,C指向feature,这是我们确定要了解的C的全部。

(我们也可能知道分支如何在本地移动,但是只有在分支已经本地移动时才可以。我们可能还对将分支与远程对象相关联有所了解,我想您可以尝试从远程对象中提取信息。 。,但通常也不知道分支的创建时间。)

但是从直觉上讲,许多人认为feature是由提交featureAB组成(并且可能有自己的生命始于{{1 }})。在某些工具中,这是准确的; git中不是这种情况。

因此,您可以使用提交者日期或提交者作者日期,具体取决于您要了解的内容。以下是一些查看方式:

您可以使用C的作者日期。如果分支重新设置了基础,则该分支应保持不变,并且此时可以早于其父级的作者日期;因此,它不一定告诉您何时可以在o上首次找到拓扑分支点,但是可以对分支的开发时间进行合理的估计。您可以找到此值

A

如果您可以排除重新定基的可能性,则可以估计开发在o作者日期之前的某个时间和git rev-list --format=%ad master..feature |tail -n1 作者日期之后的某个时间开始。您可以将A的作者日期作为

o

无论哪种情况,都可以使用提交日期而不是作者日期;但是在这种情况下,请注意,重新定标o会创建新的提交(git rev-list --format=%ad -n1 $(git merge-base master feature) 而不是feature等),因此更改了提交日期。因此,如果您想知道开发何时开始,那么可靠性就会降低。但是如果您想知道拓扑分支点何时出现在A'上,它也许更可靠。您可以使用上述命令中的A代替o