Busco mis registros de git y encuentro que AuthorDate y CommitDate son ligeramente diferentes para algunas de mis confirmaciones:
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 el compromiso es el mismo yo.
¿Como sucedió esto? Estoy perplejo durante 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 |
+------------------------------+-------------------------------+
git log
de forma predeterminada, solo muestra la fecha de confirmación del Autor. Sin embargo, si se utiliza--since
,--until
,--before
,--after
, las fechas relativas, usos git el confirmador se comprometen fecha en lugar!git log --since="yesterday"
puede no mostrar los resultados esperados si el autor cometió la fecha es diferente de la Committer fecha cometió.git --squash merge
es una estrategia de fusión algo común que se puede configurar (aunque no parece que se esté usando aquí, se menciona a modo de ejemplo). Además, si se usa git a través de un IDE o GUI de git, existe la posibilidad de que la configuración / funcionalidad no esté presente en la CLI. Puede valer la pena volver a comprobar para qué está configurada la fusión en el entorno en el que realiza la fusión.Respuestas:
La fecha del autor indica cuándo se realizó originalmente esta confirmación (es decir, cuándo terminó
git commit
). Según los documentos degit commit
, la fecha del autor podría anularse usando el--date
interruptor.La fecha de confirmación cambia cada vez que se modifica la confirmación, por ejemplo, cuando se cambia la base de la rama en la que se encuentra la confirmación en otra rama ( más ).
Lo mismo podría suceder si realiza su confirmación y envía su 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 se aplique el parche en el otro repositorio.Si envía el parche a dos colegas, habrá una fecha de autor pero dos fechas de confirmación diferentes.
Esto también se menciona en el Libro de Git :
fuente
git show -s --format="commit %cD author %aD" HEAD
, parecería que, por ejemplo, se modifica el mensaje de confirmación congit gui
ambas actualizaciones, perogit commit --amend
solo se actualiza la fecha de confirmación. poco intuitivo.La fecha del autor en una confirmación se conserva en rebase / cherry-pick, etc. Pero la fecha de confirmación se cambia.
fuente
git commit --amend
.