Sinossi
git revert [-n] [-m <parent>] <commit>...
Descrizione
Il comando git revert crea un nuovo commit le cui modifiche sono l'inverso di quelle di un commit precedente. A differenza di git reset, non riscrive la storia — aggiunge un nuovo commit che annulla uno o più vecchi. Questo rende revert sicuro da usare su branch condivisi: i collaboratori vedono un chiaro commit di "undo" piuttosto che storia riscritta.
Per fare revert di un merge commit, usa -m 1 (o qualunque numero di parent) per specificare la "mainline" — il parent la cui prospettiva dovrebbe essere preservata. Fare revert di più commit in un singolo comando li applica come una serie di nuovi commit.
Nell'uso quotidiano, git revert si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
-n, --no-commit | Mette in stage le modifiche inverse senza committare. |
-m <parent-number> | Mainline parent per fare revert di un merge. |
--continue | Riprende dopo aver risolto i conflitti. |
--abort | Cancella un revert in corso. |
--skip | Salta il commit corrente e va avanti. |
-e, --edit | Modifica il messaggio del commit di revert. |
Esempi
git revert HEAD
# Annulla il commit più recente con un nuovo commit
git revert abc123..def456
# Fa revert di un range di commit
git revert -m 1 merge-sha
# Fa revert di un merge commit, mantenendo mainline
git revert -n HEAD~2
# Mette in stage un inverso senza committare ancora
Errori comuni
Fare revert di un merge previene il futuro re-merging dello stesso branch a meno che non si faccia anche revert del revert. Pianifica di conseguenza quando fai revert di feature merge. I conflitti durante il revert richiedono --continue o --abort, proprio come rebase.
Comandi correlati
git reset, git restore, git cherry-pick, git log