Почему 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
Дата автора фиксации сохраняется при переустановке/выборе вишни и т.д. Но дата фиксации изменяется.