Git Revert
Ultimo aggiornamento
git revert annulla un commit creando un nuovo commit che applica l'inverso delle sue modifiche. Siccome aggiunge cronologia invece di riscriverla, il revert è il modo sicuro per annullare un commit già inviato con push: a differenza di git reset, non costringe tutti gli altri a riconciliare un branch riscritto.
Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.
Sintassi
| Comando | Cosa fa |
|---|---|
git revert HEAD | Fa il revert del commit più recente |
git revert <hash> | Fa il revert di un commit specifico tramite hash |
git revert HEAD~2..HEAD | Fa il revert di un intervallo di commit |
git revert -n <hash> | Fa il revert senza committare (solo staging) |
git revert -m 1 <merge-hash> | Fa il revert di un commit di merge, tenendo il genitore 1 |
Durante un revert
Se il revert incontra un conflitto, risolvilo e continua.
| Comando | Cosa fa |
|---|---|
git revert --continue | Riprende dopo aver risolto i conflitti |
git revert --abort | Annulla il revert in corso |
git revert --skip | Salta il commit corrente e continua |
revert vs reset
| Comportamento | git revert | git reset |
|---|---|---|
| Riscrive la cronologia | No | Sì |
| Sicuro sui commit già inviati | Sì | No |
| Crea un nuovo commit | Sì | No |
| Annulla un commit nel mezzo | Sì | Scomodo |
Domande frequenti su git revert
Che differenza c'è tra git revert e git reset?
git revert aggiunge un nuovo commit che annulla le modifiche di uno precedente, lasciando intatta la cronologia: è sicuro per i commit di cui hai già fatto push. git reset sposta indietro il puntatore del branch e riscrive la cronologia, cosa che va bene per i commit locali ma è pericolosa sui branch condivisi. Usa revert per annullare commit pubblici e reset per quelli locali.Come faccio il revert di un commit già inviato?
Esegui
git revert <hash> (o git revert HEAD per il più recente), poi fai il push del nuovo commit di revert. Siccome il revert non riscrive la cronologia, è il modo corretto per annullare un commit condiviso: niente force push e nessun disagio per i colleghi che l'hanno già scaricato.Come faccio il revert di un commit di merge?
Un commit di merge ha due genitori, quindi Git deve sapere quale linea di cronologia tenere. Usa
git revert -m 1 <merge-hash>, dove -m 1 dice a Git di tenere il primo genitore (di solito il branch in cui hai fatto il merge). Il revert di un merge annulla le modifiche unite ma lascia il merge nella cronologia.Posso fare il revert di più commit insieme?
Sì. Passa un intervallo come
git revert HEAD~2..HEAD per annullare gli ultimi due commit, oppure elenca più hash. Per impostazione predefinita Git crea un commit di revert per ogni commit annullato; aggiungi -n per mettere in staging tutte le inversioni senza committare, poi fai tu un unico commit.Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire
git revert 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.