Przeszukuję dzienniki git i stwierdzam, że AuthorDate i CommitDate są nieco inne dla niektórych moich zatwierdzeń:
commit 3a5912f90dc5227f308e99f95152fbee2301c59a
Author: <hidden>
AuthorDate: Fri Jun 15 10:57:22 2012 +0800
Commit: <hidden>
CommitDate: Fri Jun 15 11:14:37 2012 +0800
Autor i Commit to ta sama ja.
Jak to się stało? Jestem zdziwiony od wielu dni.
Jest ich więcej (dzieje się w 17 z 341 zatwierdzeń):
+------------------------------+-------------------------------+
| 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
domyślnie pokazuje tylko datę zatwierdzenia autora. Ale jeśli używasz--since
,--until
,--before
,--after
, terminy względne, git używa committer datę popełnienia zamiast!git log --since="yesterday"
mogą nie wykazywać oczekiwanych rezultatów, jeśli Autor popełnić data różni się od committer datę popełnienia.git --squash merge
jest dość powszechną strategią scalania, którą można skonfigurować (chociaż nie wygląda na to, że jest tutaj używana, została omówiona dla przykładu). Ponadto, jeśli git jest używany przez IDE lub git GUI, istnieje możliwość konfiguracji / funkcjonalności nieobecnej w CLI. Warto dwukrotnie sprawdzić, do czego jest skonfigurowane scalanie w środowisku, w którym jest ono wykonywane.Odpowiedzi:
The Data Autor zauważa przy tym popełnić pierwotnie wykonane (czyli po zakończeniu
git commit
). Zgodnie z dokumentacjągit commit
datę autora można zmienić za pomocą--date
przełącznika.Data popełnienia ulega zmianie za każdym razem popełnić jest modyfikowana, na przykład podczas przebazowania gałąź gdzie popełniania jest na innym oddziale ( więcej ).
To samo może się zdarzyć, jeśli dokonasz zatwierdzenia i wyślesz łatkę do innej w celu zastosowania poprawki w innym repozytorium: data autora będzie datą twojego
git commit
, data zatwierdzenia zostanie ustawiona na tę datę, kiedy łatka zostanie zastosowana w drugie repozytorium.Jeśli wyślesz poprawkę do dwóch współpracowników, będzie jedna data autora, ale dwie różne daty zatwierdzenia.
Jest to również wspomniane w Git Book :
źródło
git show -s --format="commit %cD author %aD" HEAD
, wydawałoby się, że na przykład poprawienie komunikatu zmiany ogit gui
aktualizację obu, alegit commit --amend
tylko zaktualizowanie daty autora. nieintuicyjne.Data autora w zatwierdzeniu jest zachowywana przy rebase / cherry-pick itp. Ale data zatwierdzenia zostaje zmieniona.
źródło
git commit --amend
.