首页 > 解决方案 > 来自不同 git 命令的不同时间值

问题描述

我看到对于特定的提交,git 为不同的命令提供不同的时间戳值。

$ git show -s --format="%ci" ee9bb
2019-09-09 17:50:43 +0530

上面的命令显示时间值为17:50:43

虽然以下命令将时间值显示为17:24:01

$ git show -s  ee9bb
commit ee9bb706c8fcc329fac4acf69ad6b684f1069170
Author: itsvamshers <itsvamshers@gmail.com>
Date:   Mon Sep 9 17:24:01 2019 +0530

    fixed country null issue


$ git log ee9bb
commit ee9bb706c8fcc329fac4acf69ad6b684f1069170
Author: itsvamshers <itsvamshers@gmail.com>
Date:   Mon Sep 9 17:24:01 2019 +0530

谁能解释为什么会这样。我应该考虑哪一个。

标签: gitgit-loggit-show

解决方案


密切注意文档%cigit log具体细节(这里是 的直接链接%ci,但它可能会随着时间的推移而失败):

%ci
提交者日期,类似 ISO 8601 的格式

现在看%ai描述

%ai
作者日期,类似 ISO 8601 的格式

一个使用提交者这个词,另一个使用作者这个词。

每次提交都有两个日期和时间戳!

%ci打印提交者日期和时间戳。

%ai打印作者日期和时间戳。

默认git log输出使用作者日期,这就是%ci显示不同日期的原因。

请注意,PRETTY FORMATS部分描述了您可以使用--pretty=fuller的关键字格式。该fuller格式包括日期和时间戳。

...我应该考虑哪一个

两者都有,或者两者都没有。这两个日期都可能是有意或无意的欺骗。使用一种或两种作为指示或提示,而不是绝对保证。

通常,如果您将现有提交复制到新提交,Git 将(至少在默认情况下)保留作者日期,但将您和现在设置为提交者和提交者日期。由于git cherry-pick复制了现有的提交,因此樱桃挑选会发生这种情况。由于git rebase在很大程度上是一系列自动化的挑选操作,这也往往发生在 rebase 上。


推荐阅读