Я просматриваю свои журналы 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
Автор и Коммит - это я.
Как это произошло? Я недоумеваю несколько дней.
Есть и другие (происходит в 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 |
+------------------------------+-------------------------------+
git log
по умолчанию отображается только дата фиксации автора. Но если вы используете--since
,--until
,--before
,--after
, относительные даты, Git использует коммиттер дату совершения вместо этого!git log --since="yesterday"
может не показать ожидаемые результаты , если автор фиксации дата отличается от коммиттер даты совершения.git --squash merge
это довольно распространенная стратегия слияния, которую можно настроить (хотя не похоже, что она здесь используется, она приведена для примера). Кроме того, если git используется через IDE или графический интерфейс git, существует возможность конфигурации / функциональности, отсутствующей в CLI. Возможно, стоит дважды проверить, для чего настроено ваше слияние в среде, в которой вы выполняете слияние.Ответы:
Дата автора отмечает, когда эта фиксация была первоначально сделана (то есть когда вы закончили
git commit
). Согласно документамgit commit
, дату автора можно переопределить с помощью--date
переключателя.Дата фиксации изменяется каждый раз, когда фиксация изменяется, например, при перебазировании ветви, в которой фиксация находится в другой ветке ( подробнее ).
То же самое может произойти, если вы сделаете фиксацию и отправите свой патч в другой, чтобы применить патч в другом репо: дата автора будет датой вашего
git commit
, дата фиксации будет установлена на эту дату, когда патч будет применен в другое репо.Если вы отправите патч двум коллегам, будет одна дата автора, но две разные даты фиксации.
Это также упоминается в Git Book :
источник
git show -s --format="commit %cD author %aD" HEAD
этим, может показаться, что, например, изменение сообщения о фиксацииgit gui
обновляет оба, ноgit commit --amend
обновляет только дату коммиттера. не интуитивно понятный.Дата автора коммита сохраняется в rebase / cherry-pick и т. Д. Но дата коммита изменена.
источник
git commit --amend
.