Come annullare l'ultimo commit nel sistema di controllo versione?
sobes.tech AI
Risposta dell'AI
Ci sono diversi modi per annullare l'ultimo commit, a seconda che sia stato inviato al repository remoto e qual è l'obiettivo dell'annullamento.
-
Annullare il commit locale senza modificare i file (reset soft):
git reset --soft HEAD~1 # Riporta HEAD di un commit indietro, lasciando le modifiche nell'indice (staged). -
Annullare il commit locale lasciando le modifiche nella directory di lavoro (reset misto - di default):
git reset HEAD~1 # Riporta HEAD di un commit indietro. Le modifiche rimangono nella directory di lavoro (unstaged). -
Annullare completamente il commit locale, inclusa la rimozione delle modifiche dalla directory di lavoro e dall'indice (reset duro):
git reset --hard HEAD~1 # Riporta HEAD di un commit indietro e annulla tutte le modifiche locali. Attenzione! Perdita di dati. -
Annullare un commit già inviato al repository remoto, creando un nuovo commit che annulla le modifiche del precedente:
git revert HEAD # Crea un nuovo commit che inverte le modifiche dell'ultimo commit. Sicuro per i rami pubblici.
La scelta del metodo dipende dalla situazione. Per rami pubblici si consiglia di usare git revert, poiché non modifica la storia dei commit. Per modifiche locali o rami su cui lavori da solo, puoi usare git reset.