Cómo cambiar las fechas de commit de git
Paso a paso: instala git-edit-date, export tu rama a CSV, edite fechas en una hoja de cálculo, apply reescriba y envíe de forma segura.
Cuando necesitas esto
- Las commits muestran marcas de tiempo UTC de un corredor CI en lugar de su zona horaria local
- La desviación del reloj de la computadora portátil dejó un bloque de commits en el momento equivocado
- El correo electrónico o el nombre del autor son incorrectos en muchas commits en una rama de función
- Quiere revisar cada cambio de fecha en una hoja de cálculo antes de reescribir el historial
Paso 1: Exportar la rama
Desde tu repositorio, en la rama que deseas reescribir:
git-edit-date export -o commits.csv
Esto exporta el historial de ramas actual (git rev-list --reverse HEAD)
a un archivo CSV. Solo se incluyen las commits a las que se puede acceder desde HEAD.
Paso 2: edite el CSV
Abra commits.csv en Excel, LibreOffice Calc o cualquier editor de hojas de cálculo.
Columnas CSV
hash— commit original SHA (solo referencia; no editar)author_name— nombre para mostrar del autor de la commitauthor_email— confirmar correo electrónico del autorauthor_date: cuándo se realizó originalmente el trabajo (RFC3339)committer_date: cuando se creó el objeto de commit (RFC3339)message: confirma message (solo referencia; no modificado en apply)
Las fechas utilizan el formato RFC3339, por ejemplo 2024-03-05T14:30:00+01:00.
En la mayoría de los casos, desea que author_date y committer_date coincidan.
Consulte Preguntas frecuentes sobre la fecha del autor frente a la fecha del committer.
author_email,author_date,committer_date
alice@wrong.com,2024-03-06T03:14:00Z,2024-03-06T03:14:00Z
author_email,author_date,committer_date
alice@work.com,2024-03-05T14:30:00+01:00,2024-03-05T14:30:00+01:00
Puede editar solo algunas filas; las filas sin cambios conservan sus metadatos originales. Guarde el archivo como CSV cuando haya terminado.
Paso 3: Aplicar y presionar
Aplicar requiere un árbol de trabajo limpio a menos que pase -allow-dirty:
git-edit-date apply -file=commits.csv
Verifique el resultado:
git log --format=fuller -3
Si la rama ya fue enviada, actualice el control remoto de forma segura:
git push --force-with-lease
Lista de verificación de empuje seguro
- Confirma que estás en la rama correcta (
git branch --show-current) - Asegúrate de que nadie más esté ingresando activamente a esta rama.
- Utilice
--force-with-lease, no--forcedesnudo - Nunca reescribas ramas compartidas o protegidas sin el acuerdo del equipo
- Se espera que las firmas GPG en commits reescritas dejen de ser válidas
Instalar git-edit-date
curl -LO https://giteditdate.com/git-edit-date_amd64.deb
sudo dpkg -i git-edit-date_amd64.deb
Referencia de comando: Documentos CLI · Preguntas comunes: Preguntas frecuentes · Guías: múltiples commits, fecha del autor