Почему git AuthorDate отличается от CommitDate?

Я просматриваю свои журналы 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

Автор и Commit - это то же самое.

Как это происходит? Я озадачен днями.

Есть больше (происходит в 17 из 341 коммитов):

+------------------------------+-------------------------------+
| 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           |
+------------------------------+-------------------------------+

Ответы

Ответ 1

Заметка author date отмечает, когда эта фиксация была первоначально сделана (т.е. когда вы закончили git commit). Согласно документам git commit, дата автора может быть переопределена с помощью переключателя --date.

Дата фиксации изменяется каждый раз, когда коммит изменяется, например, при перезапуске ветки, где фиксация находится в другой ветке.

То же самое может произойти, если вы сделаете фиксацию и отправите свой патч другому, чтобы применить патч в другом репо: датой автора будет дата вашего git commit, дата фиксации будет установлена ​​на эту дату когда патч применяется в другом репо.

Если вы отправите патч двум коллегам, будет одна дата автора, но две разные даты фиксации.

Это также упоминается в Git Book:

Возможно, вам интересно, какая разница между автором и коммиттером. Автор - это тот, кто изначально написал патч, а коммиттер - это тот, кто последний раз применял патч. Итак, если вы отправляете патч к проекту, и один из основных членов применяет патч, вы получаете кредит; вы как автор и основной член как коммиттер

Ответ 2

Дата автора фиксации сохраняется при переустановке/выборе вишни и т.д. Но дата фиксации изменяется.