Come modificare le date git commit

Passo dopo passo: installazione git-edit-date, esporta il tuo ramo in CSV, modifica le date in un foglio di calcolo, applica la riscrittura e spingi in sicurezza.

Quando ne hai bisogno

Passaggio 1: esporta il ramo

Dal tuo repository, sul ramo che vuoi riscrivere:

git-edit-date export -o commits.csv

Questo esporta la cronologia del ramo corrente (git rev-list --reverse HEAD) in un file CSV. Solo commit raggiungibili da HEAD sono inclusi.

Passaggio 2: modifica CSV

Aprire commits.csv in Excel, LibreOffice Calc o qualsiasi editor di fogli di calcolo.

Colonne CSV

Le date utilizzano il formato RFC3339, ad esempio 2024-03-05T14:30:00+01:00. Nella maggior parte dei casi lo desideri author_date E committer_date abbinare. Vedi il Domande frequenti sulla data dell'autore rispetto alla data committer.

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

Puoi modificare solo alcune righe: le righe non modificate mantengono i metadati originali. Al termine, salva il file come CSV.

Passaggio 3: applicare e spingere

L'applicazione richiede un albero funzionante pulito a meno che non passi -allow-dirty:

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

Verifica il risultato:

git log --format=fuller -3

Se il ramo è già stato inviato, aggiorna il telecomando in modo sicuro:

git push --force-with-lease

Lista di controllo push sicura

  1. Conferma di essere sul ramo corretto (git branch --show-current)
  2. Assicurati che nessun altro stia spingendo attivamente verso questo ramo
  3. Utilizzo --force-with-lease, non nudo --force
  4. Non riscrivere mai shared o rami protetti senza il consenso del team
  5. È previsto che le firme GPG sugli commit riscritti diventino non valide

Installa git-edit-date

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

Riferimento al comando: CLI documenti · Domande comuni: Domande frequenti · Guide: più commit, data dell'autore