Actualizar la fecha del autor de confirmación de git al modificar


305

Me encontré modificando mis compromisos con bastante frecuencia. No lo hago stashmucho porque tiendo a olvidar que lo hice, especialmente cuando quiero guardar lo que hice antes de irme o antes de un fin de semana, así que hago un compromiso de "borrador". Lo único es que, cuando modifico el commit, todavía está configurado en la fecha original del autor. ¿Hay alguna forma (simple) de actualizarlo al modificar?


55
Esto es especialmente útil cuando realiza un rebase interactivo y espera que GitHub muestre los commits en la Solicitud de extracción en orden de árbol en lugar de orden de fecha.
Sukima

Respuestas:


368

Puede cambiar la fecha del autor con el --dateparámetro a git commit. Por lo tanto, si desea modificar la última confirmación y actualizar su fecha de autor a la fecha y hora actuales, puede hacer lo siguiente:

git commit --amend --date="$(date -R)"

(El -Rparámetro to datele dice que envíe la fecha en formato RFC 2822. Este es uno de los formatos de fecha entendidos porgit commit ).


27
FTR, parece en OS X, dateno lo sabe -R. Usar datesin opciones hizo el trabajo de todos modos
ksol

77
Tenga en cuenta que si desea esto como un alias, debe agregar !ay escapar de las comillas, por ejemplocan = !git commit --amend --date=\"$(date -R)\"
Fabian Steeg

99
date -Rno funciona en OSX, use date +%sen su lugar
guarde

44
Idem para FreeBSD:git commit --amend --date="$(date +%s)"
Dereckson

120
git commit --amend --date=nowFunciona también. No es necesario invocar una subshell con el comando date (1) . Puede verlo en el código fuente de git (1) en date.c 'now' es un valor especial que se convierte utilizando la función date_now (). Lo mismo para 'mediodía', 'ayer', 'medianoche', 'té' y otros que figuran en la matriz de estructura especial [].
sbz

267

Otra forma de hacer esto es

git commit --amend --reset-author

Esto cambia el autor de la confirmación, así como la fecha, pero si originalmente fue su confirmación no apresurada, entonces eso es un no-op.

También puede agregar --no-editsi desea actualizar la fecha en varias confirmaciones pero desea que los mensajes de confirmación permanezcan intactos. De esta manera, no se le pedirá que edite el mensaje para cada confirmación.


44
Me pregunto por qué este comportamiento no es predeterminado y debería especificarse explícitamente. Es muy sorprendente y conduce a consecuencias potencialmente malas. En mi opinión, los git commit --amend cambios se comprometen en lugar de solo ajustes o algo así, es decir, da como resultado un historial diferente de cambios en el contenido del repositorio donde cualquier sistema de control de versiones es muy estricto. Y como tal, intuitivamente espero que tanto el autor como la fecha coincidan con los datos de confirmación reales. Especialmente la autoría es importante, ni siquiera la fecha. Vota este comentario si quieres vencer a los desarrolladores de git responsables de dicho incumplimiento. :)
Artem Pisarenko

258

A partir de Git v2.1.4 (probado en Debian 8 (Jessie))

git commit --amend --date=now

8
Y si no desea volver a ver el mensaje de confirmación, agregue --no-edit.
Henrik N

12

Me gusta la respuesta de Mark y la usé varias veces, pero ahora estoy en OS X y date -Rno es compatible. Pero todo es mucho más fácil de lo que la respuesta original nos hizo pensar, ¡solo use una cadena vacía !

git commit --date= --amend

66
Eso no funciona Git aborta con el errorfatal: invalid date format:
Nikos C.

Me funcionó (en Windows, Git 1.9.4)
Csq

1
Mejor usar --date="$(date)"en OS X. La opción -Res GNUism.
Rudá Moura

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.