【问题标题】:How to get the creation time of a git branch from remote?如何从远程获取 git 分支的创建时间?
【发布时间】:2018-12-13 20:45:08
【问题描述】:

我想知道一个分支的创建时间。 而且我不能使用'git reflog',因为该分支刚刚从远程签出。所以在本地只有我结帐的 reflogs。 我使用 git log 并获得了大量日志,包括其他分支。 我怎样才能得到时间?

【问题讨论】:

  • git log -g <branch> or git reflog show <branch>
  • @IvanSheigets 我找不到git log -g 的文档参考,你确定这有效吗?分支只是对提交的引用。由于新创建的分支与在不同时间创建的其他分支指向相同的提交,因此分支是否“知道”它的创建时间?
  • @Tim Biegeleisen,它有效
  • @IvanSheigets 如果我自己用自己的 PC 开发分支,它就可以工作。但是对于来自远程的分支,它不能。在没有早期日志的情况下,我只能在拉取分支之后获取分支的日志。
  • 请查看stackoverflow.com/questions/2255416/…,可能对您有所帮助。

标签: git


【解决方案1】:

git 不会记录分支的创建时间。最接近的是,如果您对提交拓扑做出某些假设,则可以检查与分支相关的第一次提交的日期。

假设你有

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

现在看起来“很明显”feature 是在 o 创建的,然后 A 被提交给 feature(随后是 BC)。这不一定是真的,并且 git 不会跟踪任何可以告诉您它是否为真的信息,因为在 git 中,分支只是指向单个提交的指针(按照惯例,它通常会在添加提交时以某种方式移动)。在这种情况下,feature 指向C,这就是我们肯定知道的关于feature 的全部内容。

(我们可能还知道分支如何在本地移动 - 但前提是它已在本地移动。我们可能还知道有关将分支与远程相关联的信息,我想您可以尝试从远程提取信息.. . 但它通常也不知道分支是何时创建的。)

但直觉上,许多人认为feature 包含提交ABC(并且可能从o 开始拥有自己的生命)。在一些准确的工具中;在 git 中并非如此。

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

您可以使用As 作者日期。如果分支被重新设置,这应该保持不变,并且可能在其父的作者日期之前;因此,这不一定会告诉您何时可以首先在o 找到拓扑分支点,但它可以公平地估计分支开发何时开始。你可以找到这个值

git rev-list --format=%ad master..feature |tail -n1

如果您可以排除变基,那么您可以估计开发开始于As 作者日期之前的某个时间,以及os 作者日期之后的某个时间。你可以得到os 作者日期为

git rev-list --format=%ad -n1 $(git merge-base master feature)

在任何一种情况下,您都可以使用提交日期而不是作者日期;但在这种情况下,请注意重新设置feature 会创建新的提交(A' 而不是A 等),因此提交日期会更改。所以如果你想知道什么时候开始开发,这是不太可靠的;但是如果你想知道拓扑分支点是什么时候出现在o的,或许更靠谱些。您可以使用%cd 代替上述命令中的%ad

【讨论】:

  • 相关:stackoverflow.com/a/3162929/1256452(可能值得链接到这个问题,这是一个相当不错的答案)。
  • 感谢您的回答,它有很大帮助。最后,我使用 'git log --graph' 找出分支的最后一个 'merge master' 并将该时间确定为分支的创建时间。不准确,但可以达到我的目标。
猜你喜欢
  • 2015-03-30
  • 1970-01-01
  • 2012-03-21
  • 2019-08-14
  • 2012-01-02
  • 2013-12-13
相关资源
最近更新 更多