来自不同 git 命令的不同时间值

Different time values from different git commands

我看到对于特定的提交,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

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

密切关注the git log documentation (here is a direct link to %ci%ci的具体细节,但可能会随着时间的推移而失败):

%ci
committer date, ISO 8601-like format

现在看看%ai description:

%ai
author date, ISO 8601-like format

一个使用committer这个词,另一个使用author.

这个词

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

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

%ai 打印 author 日期和时间戳。

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

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

... which one should I consider

两者兼而有之。这两个日期都可能被无意或有意地欺骗。使用其中之一或两者作为指示或提示,而不是绝对保证。

一般来说,如果您将现有提交复制到新提交,Git将——至少在默认情况下——保留作者 日期,但现在将您设置为提交者和提交者日期。由于 git cherry-pick 复制了一个现有的提交,这发生在 cherry-pick 上。由于 git rebase 主要是一系列自动化的精选操作,因此 rebase 也往往会发生这种情况。