2012-08-08 10 views
53

Puedo búsqueda de los registros de mi Git y parece que el AuthorDate y CommitDate es ligeramente diferente para algunos de mis compromete:¿Por qué git AuthorDate es diferente de 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 

El Autor y comprometerse es lo mismo conmigo.

¿Cómo ocurre esto? Estoy desconcertado por días.

Hay más (ocurre en 17 de 341 confirmaciones):

+------------------------------+-------------------------------+ 
| 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, parece que sucede cuando fusionando ramas. – fossilet

+1

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

Respuesta

83

La fecha del autor notas cuando este compromiso se realizó originalmente (es decir, cuando terminó el git commit). De acuerdo con los documentos de git commit, la fecha del autor podría anularse utilizando el interruptor --date.

La fecha de compromiso se cambia cada vez que se modifica la confirmación, por ejemplo, al volver a establecer la base de la bifurcación donde la confirmación está en otra rama.

Lo mismo podría suceder si realiza la confirmación y envía el parche a otro para aplicar el parche en otro repositorio: la fecha del autor será la fecha de su git commit, la fecha de confirmación se establecerá en esa fecha cuando el parche se aplica en el otro repositorio.

Si envía el parche a dos colegas, habrá una fecha de autor, pero dos cometer fechas diferentes.

Esto también se menciona en la Git Book:

Usted puede preguntarse cuál es la diferencia entre el autor y confirmador . El autor es la persona que originalmente escribió el parche, mientras que el confirmador es la última persona que aplica el parche. Por lo tanto, si envía un parche a un proyecto y uno de los miembros principales aplica el parche, ambos obtienen el crédito — como autor y el miembro central como committer

+0

¿Mi caso ocurrirá al fusionar sucursales? – fossilet

+1

No. Creo que la fecha es parte del SHA, por lo tanto, a menos que realice alguna operación que reescriba el historial, como el rebase, no debería cambiar. – asmeurer

+0

Se apreciará debidamente una breve descripción de cómo deberíamos esperar que las marcas de tiempo cambien después de una recolección selectiva, después de modificar o cambiar el nombre de los antepasados ​​de la confirmación. Jugando con 'show git -s --format = "comprometerse% cd% ad autor" HEAD', parecería que, por ejemplo, se modifica el mensaje de confirmación con' git gui' actualiza ambos, pero 'git commit - -amend' solo actualiza la fecha del committer. poco intuitivo. –

10

La fecha de autor en un commit se conserva en el rebase/cherry-pick etc, pero se cambia la fecha de comprometerse.

+0

Algunos compromete en cuestión no son bien cherry picking o cambio de base. Parecen fusionar otra rama. – fossilet

+5

Lo mismo ocurre con 'git commit --amend'. – asmeurer

Cuestiones relacionadas