Articolo originale: Git Revert Commit – How to Undo the Last Commit

Immagina che qualcosa non vada come hai programmato mentre stai lavorando sul tuo codice in Git. Se vuoi annullare l'ultimo commit, sai come fare? Scopriamolo!

In questo articolo parleremo dei due modi possibili per annullare l'ultimo commit su Git.

Il comando revert

Il comando revert crea un commit che annulla i cambiamenti del commit selezionato. Puoi usarlo per annullare l'ultimo commit, in questo modo:

git revert <commit da annullare>

Puoi trovare il nome del commit che vuoi annullare utilizzando git log. Il primo commit descritto corrisponde all'ultimo commit creato. Da qui puoi copiare il nome alfanumerico del commit e usarlo nel comando revert.

A diagram showing that the git revert command creates a new commit to revert previous changes.
In questa immagine, ogni cerchio rappresenta un commit.

Il comando reset

Per annullare l'ultimo commit, puoi anche usare il comando reset, ma fai attenzione – cambierà la storia dei commit, quindi dovresti usarlo di rado. Sposterà l'HEAD, il branch di lavoro, al commit indicato ed eliminerà tutto ciò che segue:

git reset --soft HEAD~1

L'opzione --soft può essere usata per non perdere i cambiamenti non salvati in un commit.

A diagram showing that git reset --soft will change your commit history, but will keep any unstaged changes you have.
In questa immagine, ogni cerchio rappresenta un commit.

Se vuoi resettare l'ultimo commit e rimuovere anche tutte le modifiche che non sono nell'area di staging, puoi usare l'opzione --hard:

git reset --hard HEAD~1

In questo modo, annullerai l'ultimo commit, ma anche i cambiamenti non salvati in un commit.

A diagram showing that git reset --hard will change your commit history, but will also remove any unstaged changes you have.
In questa immagine, ogni cerchio rappresenta un commit.

Dovresti usare reset o revert in Git?

Dovresti usare il comando reset soltanto se il commit da annullare esiste solo localmente. Cambierà la storia dei commit e potrebbe sovrascrivere la storia su cui si basano i membri del team da remoto.

revert invece crea un nuovo commit che annulla i cambiamenti, quindi se è già stato fatto il push del commit da annullare a un repository condiviso, è bene usare revert, dato che non sovrascrive la storia dei commit.

Conclusione

Hai imparato quali sono i due modi per annullare l'ultimo commit e quando è meglio usare un metodo rispetto all'altro.

E ora, se noti che un commit crea un bug, sai come sistemarlo subito!