几天前,我从终端的master分支了当前分支。从那以后,进行了几次提交,但是当我键入git log
时,我会看到先前的提交,我在当前分支上进行的提交以及其他人在master上进行的提交。只能假设,在其他人的提交和我的提交之间的某个地方,我将(在master分支上)键入
git checkout -b newbranch
有git命令可以告诉您从master分支newbranch时的确切时间戳吗?
答案 0 :(得分:2)
不是。那不是git跟踪的东西。实际上,它甚至都没有跟踪newbranch
是“从master
分支的事实。 (顺便说一句,我建议不要使用“ fork”来指代分支之间的关系,因为“ fork”在git repos和OSS项目中通常具有特定含义。)
正如RomainValeri所建议的那样,在特定情况下,您也许可以查看与分支相关联的元数据的文件系统时间戳。但是这些并不能保证有任何意义。有时,他们提到的文件将不存在,或者将在与分支创建无关的时间创建。即使确实存在并且确实反映了正确的时间戳,它的意义也不大。因为“创建分支”仅意味着创建了一个新的引用。这并不意味着已经(或曾经)被检出,或者说任何引用将包含新提交。
可视化现在情况的最简单方法是获取一个提交图,该图显示分支和其他引用的位置。您可以使用类似git log --graph --all --full-history
的名称。 (--full-history
选项可能是不必要的,但由于要点是我们不确定所发生的情况,因此可以提供最真实的信息。)或者您可能会发现GUI使其更易于阅读;当我需要查看“大图”时,经常使用gitk --all --full-history
。
请记住,默认情况下肯定会显示创建分支之前的提交。也就是说,如果您有
A -- B -- C <--(master)
\
D <--(newbranch)
然后默认情况下D
的日志包括A
,B
和D
,因为这是该代码在{{1 }}。如果您看到的是newbranch
,则表明您根本不在C
上(在这种情况下,上图并不是您真正拥有的)
其余的可能是切线,但以防万一...
默认情况下包含newbranch
和A
的原因是,同样,git不知道/不在乎哪个分支是从哪个其他分支创建的,或者类似的东西。在上图中,B
可能是原始分支,newbranch
可能已经从master
分支了;到git,这与B
从newbranch
到master
的分支相同。或者可以在分离的HEAD状态下创建B
,并且可以在事实保留D
之后创建newbranch
。否则可能会发生很多其他事情。
如果您想查看在D
上添加的 just 提交,则可以说类似newbranch
(告诉日志以排除{{ 1}}的历史。
答案 1 :(得分:1)
当创建新分支newbranch
时,git在.git/refs/heads/newbranch
处写入文件(包含其指向的提交的SHA-1)。也许检查其创建时间戳?
(当然,这仅是分支起源的本地存储库的解决方案,而不是来自另一个存储库的解决方案。)