A volte è necessario correggere l’autore di uno o più commit nel repository git, ad esempio quando i commit sono stati eseguiti con il nome o l’email sbagliati. Ecco come farlo dalla radice del repository.

Il Comando

Per correggere gli autori di tutti i commit dalla radice del repository, utilizza il seguente comando:

git rebase -i --root --exec "git commit --amend --no-edit --author='New Name <new.email@example.com>'"

Spiegazione del Comando

  • git rebase -i --root: Avvia una rebase interattiva a partire dal primo commit del repository
  • --exec: Esegue il comando specificato dopo ogni commit durante la rebase
  • git commit --amend: Modifica il commit attuale
  • --no-edit: Non apre l’editor per modificare il messaggio del commit
  • --author='New Name <new.email@example.com>': Specifica il nuovo autore nel formato “Nome Cognome email@example.com

Esempio Pratico

Se vuoi correggere tutti i commit con l’autore “Andrea Nicola”:

git rebase -i --root --exec "git commit --amend --no-edit --author='Andrea Nicola <andrea@example.com>'"

Attenzione Importante ⚠️

  1. Backup: Prima di eseguire questa operazione, crea un backup del tuo repository
  2. Repository Pubblici: Se il repository è stato pushato su un server remoto, dovrai usare git push --force per aggiornare il repository remoto. Comunica ai collaboratori prima di farlo
  3. Commit SHA: Questa operazione cambierà i SHA di tutti i commit, invalidando qualsiasi riferimento a specifici commit SHA

Ricaricare i Commit sul Server Remoto

Dopo aver completato la rebase, se il repository è stato pushato:

git push origin --force-with-lease

Nota: --force-with-lease è più sicuro di --force poiché verifica che nessuno abbia pushato nuovi commit nel frattempo.

Risorse Aggiuntive

Correggere Solo l’Ultimo Commit

Se hai bisogno di correggere solo l’autore dell’ultimo commit (quello su cui sei attualmente), puoi usare un comando più semplice senza necessità di rebase:

git commit --amend --author="New Name <new.email@example.com>" --no-edit

Questo comando modifica direttamente l’ultimo commit senza aprire l’editor, mantenendo il messaggio di commit originale. È utile quando ti accorgi subito dell’errore nell’autore dopo aver fatto un commit.

Se il commit è già stato pushato sul server remoto, ricordati di usare git push --force-with-lease per aggiornare il repository remoto.

Buona fortuna con la correzione dei tuoi commit! 🚀