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

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

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.

Antes
author_email,author_date,committer_date
alice@wrong.com,2024-03-06T03:14:00Z,2024-03-06T03:14:00Z
Después
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

  1. Confirma que estás en la rama correcta (git branch --show-current)
  2. Asegúrate de que nadie más esté ingresando activamente a esta rama.
  3. Utilice --force-with-lease, no --force desnudo
  4. Nunca reescribas ramas compartidas o protegidas sin el acuerdo del equipo
  5. 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