2012-08-08 13 views
53

ich meine git Protokolle Nachschlag und feststellen, dass die AuthorDate und CommitDate für einige meiner Commits ist etwas anders:Warum git AuthorDate unterscheidet sich von 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 

Der Autor und Commit ist die gleiche mir.

Wie passiert das? Ich bin tagelang verwirrt.

Es gibt mehr (in 17 von 341 Commits geschieht):

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

Hmm bekommen, wie es scheint, geschieht, wenn Zweige zusammenführen. – fossilet

+1

Related: http://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git –

Antwort

83

Das Autor Datum Notizen, wenn diese Festschreibung ursprünglich gemacht wurde (d. H. Wenn Sie die git commit beendet haben). Gemäß den Dokumenten von git commit konnte das Datum des Autors mit dem Schalter --date außer Kraft gesetzt werden.

Das Festschreibungsdatum wird jedes Mal geändert, wenn die Festschreibung geändert wird, z. B. wenn die Verzweigung, in der sich die Festschreibung in einer anderen Verzweigung befindet, neu erstellt wird.

Dasselbe kann passieren, wenn Sie Ihren Commit machen und Ihren Patch an einen anderen senden, um den Patch in einem anderen Repo anzuwenden: Das Autorendatum ist das Datum Ihrer git commit, das Commit-Datum wird auf dieses Datum gesetzt Der Patch wird im anderen Repo angewendet.

Wenn Sie den Patch an zwei Kollegen senden, gibt es ein Autorendatum, aber zwei verschiedene Commit-Daten.

Dies spiegelt sich auch in der Git Book erwähnt:

Sie werden sich vielleicht fragen, was der Unterschied zwischen Autor und Committer ist. Der Autor ist die Person, die ursprünglich den Patch schrieb, während der Committer die Person ist, die zuletzt den Patch anwendete. Also, wenn Sie in einem Patch zu einem Projekt und einer der Kernelemente wenden den Patch senden, Sie beiden Kredite — Sie als Autor und das Kernelement als Committer

+0

Wird mein Fall beim Zusammenführen von Zweigen passieren? – fossilet

+1

Nein. Ich glaube, das Datum ist Teil des SHA. Wenn Sie also keine Operation ausführen, die den Verlauf neu schreibt, wie zum Beispiel das Umbasieren, sollte sich das Datum nicht ändern. – asmeurer

+0

Eine kurze Beschreibung, wie wir erwarten könnten, dass sich die Zeitstempel nach einem Cherry-Pick ändern würden, nachdem die Vorfahren des Commits geändert oder neu gefestigt wurden, würde gebührend geschätzt werden. Spielen mit 'git show -s --format =" commit% cD Autor% aD "HEAD', es scheint, dass zum Beispiel die Änderung der Commit-Nachricht mit' git gui' beide aktualisiert, aber 'git commit - -amend aktualisiert nur das Committer-Datum. nicht intuitiv. –

10

Der Autor Datum an einem Commit erhalten auf rebase/cherry-pick etc. Aber das Übertragungsdatum geändert wird.

+0

Einige Commits in Frage sind nicht entweder Rosinenpicken oder Rebasing. Sie sehen aus wie einen anderen Zweig zu verschmelzen. – fossilet

+5

So tut 'git commit --amend'. – asmeurer

Verwandte Themen