Menu
Coddy logo textTech

Git Undo Commit: annullare un commit

Ultimo aggiornamento

Il modo in cui annulli un commit dipende da quale commit è e dal fatto che tu ne abbia già fatto il push. Un commit più vecchio sepolto nella cronologia, o qualsiasi cosa già condivisa, richiede git revert, che aggiunge un nuovo commit che lo inverte senza riscrivere nulla. Una serie di commit locali recenti si può semplicemente eliminare con git reset. Se ti serve solo annullare il commit più recente, la pagina git undo last commit copre ogni variante di questa correzione veloce.

Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.

Due modi per annullare un commit: git reset riporta indietro il branch (lavoro locale), git revert aggiunge un commit inverso (sicuro dopo il push).

Quale comando usare

SituazioneComando
Annullare un commit più vecchio, mantenendo tutto ciò che viene dopogit revert <hash>
Annullare un commit già inviatogit revert <hash>
Annullare gli ultimi 3 commit locali, mantenendo il lavorogit reset --soft HEAD~3
Annullare gli ultimi 3 commit locali, scartando il lavorogit reset --hard HEAD~3
Annullare un intervallo con nuovi commit inversigit revert HEAD~3..HEAD

reset vs revert

Comportamentogit resetgit revert
Riscrive la cronologiaSìNo
Sicuro sui commit già inviatiNoSì
Crea un nuovo commitNoSì
Funziona su vecchi commit a metà cronologiaNoSì
Può scartare le modificheSì (--hard)No

Esempio pratico

Annulla un commit specifico più vecchio, anche già inviato, senza toccare i commit che sono venuti dopo.

PassoComandoRisultato
1git log --onelineTrova l'hash del commit sbagliato (per esempio a1b2c3d)
2git revert a1b2c3dUn nuovo commit lo inverte; i commit successivi restano intatti
3git pushCondividi la correzione: nessuna cronologia è stata riscritta

Domande frequenti su git undo commit

Come annullo un commit più vecchio senza perdere i commit successivi?
Usa git revert <hash>. Il revert crea un nuovo commit che inverte solo quello che indichi: ogni commit successivo resta esattamente com'era. Trova prima l'hash con git log --oneline. Se il revert va in conflitto con modifiche successive, Git si ferma così puoi risolvere ed eseguire git revert --continue.
Come annullo più commit insieme?
Per i commit solo locali, git reset --soft HEAD~3 rimuove gli ultimi tre mantenendo le loro modifiche in staging (usa --hard per scartarle). Per i commit già inviati, fai invece il revert dell'intervallo: git revert --no-commit HEAD~3..HEAD li inverte tutti e tre, poi un unico git commit registra l'annullamento.
Come annullo un commit di cui ho già fatto il push?
Usa git revert <hash> invece di reset. Il revert crea un nuovo commit che annulla le modifiche del commit indicato, lasciando intatta la cronologia. È il modo sicuro per annullare commit condivisi: riscrivere con reset una cronologia già inviata costringe tutti gli altri a riconciliare le proprie copie.
Quando conviene usare reset e quando revert?
Usa reset quando i commit sono solo tuoi e ancora locali: sposta semplicemente indietro il branch, come se non fossero mai esistiti. Usa revert quando il commit è già inviato, condiviso o si trova a metà della cronologia: annulla le modifiche con un nuovo commit che tutti possono scaricare in sicurezza.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire questi comandi in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come annullare le modifiche passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA