Comment modifier les dates de validation de git

Pas à pas : installer git-edit-date, export votre branche vers CSV, modifiez les dates dans une feuille de calcul, réécrivez apply et poussez en toute sécurité.

Quand tu as besoin de ça

Étape 1 — Exporter la branche

Depuis votre repo, sur la branche que vous souhaitez réécrire :

git-edit-date export -o commits.csv

Ceci exporte l'historique actuel de la branche (git rev-list --reverse HEAD) dans un fichier CSV. Seuls les commits accessibles depuis HEAD sont inclus.

Étape 2 — Modifiez le CSV

Open commits.csv dans Excel, LibreOffice Calc ou n'importe quel éditeur de feuille de calcul.

Colonnes CSV

Les dates utilisent le format RFC3339, par exemple 2024-03-05T14:30:00+01:00. Dans la plupart des cas, vous souhaitez author_date and committer_date pour correspondre. Voir le FAQ sur la date de l'auteur par rapport à la date du contributeur.

Avant
author_email,author_date,committer_date
alice@wrong.com,2024-03-06T03:14:00Z,2024-03-06T03:14:00Z
Après
author_email,author_date,committer_date
alice@work.com,2024-03-05T14:30:00+01:00,2024-03-05T14:30:00+01:00

Vous ne pouvez modifier que certaines lignes : les lignes inchangées conservent leurs métadonnées d'origine. Enregistrez le fichier sous CSV une fois terminé.

Étape 3 — Appliquer et pousser

L'application nécessite un arbre de travail propre, sauf si vous réussissez -allow-dirty:

git-edit-date apply -file=commits.csv

Vérifiez le résultat :

git log --format=fuller -3

Si la branche a déjà été poussée, mettez à jour la télécommande en toute sécurité :

git push --force-with-lease

Liste de contrôle de poussée sécurisée

  1. Confirmez que vous êtes sur la bonne succursale (git branch --show-current)
  2. Assurez-vous que personne d'autre ne pousse activement vers cette branche
  3. Use --force-with-lease, pas nu --force
  4. Ne réécrivez jamais les branches partagées ou protégées sans l’accord de l’équipe
  5. Attendez-vous à ce que les signatures GPG sur les validations réécrites deviennent invalides

Installer git-edit-date

curl -LO https://giteditdate.com/git-edit-date_amd64.deb
sudo dpkg -i git-edit-date_amd64.deb

Référence de la commande : Documents CLI · Questions courantes : FAQ · Guides : plusieurs commits, date de l'auteur