131

我查找我的 git 日志,发现我的一些提交的 AuthorDate 和 CommitDate 略有不同:

commit 3a5912f90dc5227f308e99f95152fbee2301c59a
Author:     <hidden>
AuthorDate: Fri Jun 15 10:57:22 2012 +0800
Commit:     <hidden>
CommitDate: Fri Jun 15 11:14:37 2012 +0800

作者和提交者和我一样。

这是怎么发生的?我困惑了好几天。

还有更多(发生在 341 次提交中的 17 次):

+------------------------------+-------------------------------+
| from_unixtime(authored_date) | from_unixtime(committed_date) |
+------------------------------+-------------------------------+
| 2012-06-15 10:57:22          | 2012-06-15 11:14:37           |
| 2012-06-15 14:39:54          | 2012-06-15 14:48:57           |
| 2012-06-19 12:28:21          | 2012-06-19 12:29:41           |
| 2012-06-21 18:16:25          | 2012-06-21 18:28:48           |
| 2012-06-26 17:30:54          | 2012-06-26 17:33:55           |
| 2012-07-13 11:41:43          | 2012-07-13 11:42:17           |
| 2012-07-13 11:56:02          | 2012-07-13 12:13:22           |
| 2012-07-13 12:05:09          | 2012-07-13 12:12:24           |
| 2012-07-12 18:38:49          | 2012-07-13 12:26:35           |
| 2012-07-13 11:00:47          | 2012-07-13 12:25:15           |
| 2012-07-16 14:10:54          | 2012-07-16 14:15:01           |
| 2012-07-13 12:56:51          | 2012-07-16 13:49:48           |
| 2012-07-16 14:10:54          | 2012-07-16 14:19:46           |
| 2012-07-24 16:05:05          | 2012-07-24 16:05:48           |
| 2012-07-24 17:42:58          | 2012-07-24 17:43:33           |
| 2012-07-24 17:42:58          | 2012-07-24 17:45:18           |
| 2012-07-26 16:55:40          | 2012-07-26 16:55:53           |
+------------------------------+-------------------------------+
4

3 回答 3

190

作者日期说明了最初提交的时间(即完成的时间git commit)。根据 的文档git commit,可以使用--date开关覆盖作者日期。

每次修改提交时,提交日期都会更改,例如,将提交所在的分支重新定位到另一个分支(更多)时。

如果您进行提交并将补丁发送给另一个人以便在另一个仓库中应用补丁,也会发生同样的情况:作者日期将是您的日期git commit,提交日期将设置为应用补丁时的日期另一个回购。

如果您将补丁发送给两位同事,则会有一个作者日期,但有两个不同的提交日期。

Git Book中也提到了这一点:

您可能想知道authorcommitter之间有什么区别。作者是最初编写补丁的人,而提交是最后应用补丁的人。因此,如果您向项目发送补丁并且其中一个核心成员应用了该补丁,那么你们俩都会获得荣誉——您是作者,核心成员是提交者

于 2012-08-08T03:55:22.933 回答
31

提交的作者日期保留在 rebase / cherry-pick 等上。但提交日期已更改。

于 2012-08-08T03:50:13.993 回答
3

我碰巧遇到了 github 显示不同的提交时间的情况git log,我认为这是 Github 的一个错误。

原来github显示CommitDategit log显示AuthorDate(没有fuller标志)。

发生这种情况是因为我从不同的分支中挑选了两个提交。虽然樱桃采摘提交时间戳的变化就像在做commit --append.

在我的情况下, Gitrebase保留了提交日期。

还要检查 git log 中的 AuthorDate 和 CommitDate 使用--format=fuller Docs

于 2020-12-19T15:15:22.103 回答