我想知道分支的创建时间。 而且我不能使用'git reflog',因为分支只是从远程签出的。因此,在本地只有我结帐的补充。 我使用git log并获得了大量日志,包括其他分支。 我如何获得时间?
答案 0 :(得分:2)
git不会跟踪分支的创建时间。最接近的是,如果您对提交拓扑进行了某些假设,则可以检查第一次提交似乎与分支相关的日期。
假设你有
x -- o -- x -- x <--(master)
\
A -- B -- c <--(feature)
现在看来feature
是在o
创建的,然后A
被提交给feature
的似乎是“显而易见的”(随后是B
和{ {1}})。不一定是正确的,并且git不会跟踪任何会告诉您是否正确的信息,因为在git中,分支只是指向单个提交的指针(约定通常在添加提交时会以某种方式移动)。在这种情况下,C
指向feature
,这是我们确定要了解的C
的全部。
(我们也可能知道分支如何在本地移动,但是只有在分支已经本地移动时才可以。我们可能还对将分支与远程对象相关联有所了解,我想您可以尝试从远程对象中提取信息。 。,但通常也不知道分支的创建时间。)
但是从直觉上讲,许多人认为feature
是由提交feature
,A
和B
组成(并且可能有自己的生命始于{{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
。