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
- Gli Commit mostrano i timestamp UTC di un corridore CI invece del fuso orario locale
- La deriva dell'orologio del laptop ha lasciato un blocco di commit all'ora sbagliata
- L'e-mail o il nome dell'autore sono errati in molti commit in un ramo di funzionalità
- Vuoi rivedere ogni modifica della data in un foglio di calcolo prima di riscrivere la cronologia
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
hash— originale commit SHA (solo riferimento; non modificare)author_name— Nome visualizzato dell'autore commitauthor_email— E-mail dell'autore commitauthor_date— quando il lavoro è stato originariamente svolto (RFC3339)committer_date— quando è stato creato l'oggetto commit (RFC3339)message— Messaggio commit (solo riferimento; non modificato in fase di applicazione)
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.
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
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
- Conferma di essere sul ramo corretto (
git branch --show-current) - Assicurati che nessun altro stia spingendo attivamente verso questo ramo
- Utilizzo
--force-with-lease, non nudo--force - Non riscrivere mai shared o rami protetti senza il consenso del team
- È 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