Ich schaue in meinen Git-Protokollen nach und stelle fest, dass sich AuthorDate und CommitDate für einige meiner Commits geringfügig unterscheiden:
commit 3a5912f90dc5227f308e99f95152fbee2301c59a
Author: <hidden>
AuthorDate: Fri Jun 15 10:57:22 2012 +0800
Commit: <hidden>
CommitDate: Fri Jun 15 11:14:37 2012 +0800
Der Autor und Commit ist das gleiche ich.
Wie kommt es dazu? Ich bin tagelang verwirrt.
Es gibt noch mehr (passiert in 17 von 341 Commits):
+------------------------------+-------------------------------+
| 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
Standardmäßig wird nur das Festschreibungsdatum des Autors angezeigt. Aber wenn Sie verwenden--since
,--until
,--before
,--after
, relative Daten, git verwendet die Committer commit statt Datum!git log --since="yesterday"
Möglicherweise werden die erwarteten Ergebnisse nicht angezeigt, wenn sich das Festschreibungsdatum des Autors vom Festschreibungsdatum des Committers unterscheidet .git --squash merge
handelt es sich um eine häufig verwendete Zusammenführungsstrategie, die möglicherweise konfiguriert wird (obwohl sie nicht so aussieht, als würde sie hier verwendet, wird sie beispielsweise angeführt). Wenn Git über eine IDE oder eine Git-GUI verwendet wird, besteht die Möglichkeit, dass Konfiguration / Funktionalität in der CLI nicht vorhanden sind. Es kann sich lohnen, noch einmal zu überprüfen, wofür Ihre Zusammenführung in der Umgebung konfiguriert ist, in der Sie die Zusammenführung durchführen.Antworten:
Das Autorendatum gibt an, wann dieses Commit ursprünglich vorgenommen wurde (dh wann Sie das Commit abgeschlossen haben
git commit
). Laut den Dokumenten von könntegit commit
das Autorendatum mit dem--date
Schalter überschrieben werden .Das Commit Datum wird jedes Mal , die geändert Commit geändert werden, wenn beispielsweise die Verzweigung Rebasing wo der Commit auf einem anderen Zweig ist ( mehr ).
Dasselbe kann passieren, wenn Sie Ihren Commit durchführen und Ihren Patch an einen anderen senden, um den Patch in einem anderen Repo anzuwenden: Das Autorendatum ist das Datum Ihres
git commit
Patches, das Commit-Datum wird auf das Datum festgelegt, an dem der Patch angewendet wird das andere Repo.Wenn Sie den Patch an zwei Kollegen senden, gibt es ein Autorendatum, aber zwei unterschiedliche Festschreibungsdaten.
Dies wird auch im Git-Buch erwähnt :
quelle
git show -s --format="commit %cD author %aD" HEAD
Sie damit herumspielen, scheint es, als würden Sie beispielsweise die Festschreibungsnachricht mitgit gui
beiden Aktualisierungen ändern , abergit commit --amend
nur das Festschreibungsdatum aktualisieren. nicht intuitiv.Das Autorendatum für ein Commit bleibt bei Rebase / Cherry-Pick usw. erhalten. Das Commit-Datum wird jedoch geändert.
quelle
git commit --amend
.