Git Undo Last Commit: annullare l'ultimo commit
Ultimo aggiornamento
Per annullare il commit più recente, decidi cosa deve succedere alle sue modifiche. Tienile in staging con git reset --soft HEAD~1, tienile fuori dallo staging con un semplice git reset HEAD~1, oppure buttale via con git reset --hard HEAD~1. Se il commit è solo leggermente sbagliato, git commit --amend lo corregge sul posto. Se ne hai già fatto il push, usa git revert invece di riscrivere la cronologia. Per annullare un commit più vecchio o più commit insieme, consulta la pagina git undo commit.
Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.
Scegli cosa fare con le modifiche
| Obiettivo | Comando |
|---|---|
| Annullare il commit, modifiche in staging | git reset --soft HEAD~1 |
| Annullare il commit, modifiche fuori dallo staging | git reset HEAD~1 |
| Annullare il commit, scartare le modifiche | git reset --hard HEAD~1 |
| Correggere l'ultimo commit (messaggio o file) | git commit --amend |
| Annullare un commit già inviato | git revert HEAD |
Esempio pratico
Annulla l'ultimo commit e rifallo con un messaggio migliore.
| Passo | Comando | Risultato |
|---|---|---|
| 1 | git reset --soft HEAD~1 | Commit rimosso, le modifiche restano in staging |
| 2 | git commit -m "clearer message" | Rifai il commit delle stesse modifiche |
Domande frequenti su git undo last commit
Come annullo l'ultimo commit mantenendo le modifiche?
git reset --soft HEAD~1. Questo rimuove l'ultimo commit ma lascia le sue modifiche in staging, così puoi rifare subito il commit. Se invece vuoi le modifiche fuori dallo staging nella directory di lavoro, usa git reset HEAD~1 (la modalità predefinita).Come annullo l'ultimo commit ed elimino le modifiche?
git reset --hard HEAD~1. Questo rimuove il commit e scarta le sue modifiche dalla directory di lavoro. È distruttivo: se il lavoro potrebbe servirti, usa invece --soft, oppure recuperalo in seguito con git reflog.E se devo solo correggere il messaggio del commit?
git commit --amend. Riapre l'ultimo commit così puoi modificarne il messaggio (e rimettere file in staging se serve) senza creare un commit separato. Evita di fare l'amend di un commit già inviato, perché riscrive la cronologia.Come annullo l'ultimo commit dopo averne fatto il push?
git revert HEAD. Il revert crea un nuovo commit che inverte l'ultimo, lasciando intatta la cronologia: è la scelta sicura per i branch condivisi. Fare il reset di un commit già inviato costringe tutti gli altri a riconciliare un branch riscritto.