Featured image of post Ripristinare l'ultimo git commit

Ripristinare l'ultimo git commit

Abstract

Supponiamo di stare lavorando al nostro progetto utilizzando il tool di controllo versione Git. Può essere che o per errore o per distrazione si effettui un commit che non doveva essere fatto. In questa situazione dobbiamo prontamente ripristinare l’ultimo commit.

Ma come si fa?

Esistono due comandi per annullare l’ultimo commit.

  • Il comando revert
  • Il comando reset

Comando revert

Il comando revert crea un nuovo commit che ripristina le modifiche del commit che vogliamo ripristinare.

Per utilizzarlo basterà, dopo aver aperto un terminale, usare il seguente comando.

1
git revert <commit to revert>

Bene ma vediamo in dettaglio come usarlo.

  1. Lanciare il comando git log.
  2. Ricercare il commit che si vuole ripristinare.
  3. Copiare la stringa alfanumerica specificata del commit da ripristinare.
  4. Usare il comando git revert <commit to revert>.

Esempio.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
cd project_with_a_dot_git_folder

git log
### Esempio di stampa post git log
#
# commit 2596f783998c8ec230b38a044b49e39d07770901 (HEAD -> main, origin/main)
# Author: Foo <foo@bar.com>
# Date:   Tue Apr 9 14:47:17 2024 +0200
#
#     Add something bad
#
# commit 2ce5e2e7e36f23673b32ccef7f908f161527142b
# Author: Foo <foo@bar.com>
# Date:   Tue Apr 2 23:33:27 2024 +0200
#
#     Update something

git revert 2ce5e2e7e36f23673b32ccef7f908f161527142b

Dopo aver eseguito il comando verrà generato un nuovo commit per ripristinare le modifiche precedenti, senza cambiare la cronologia dei commit.

Comando reset

L’alternativa, per annullare l’ultimo commit, è il comando reset. C’è una piccola considerazione da tenere a mente, il comando reset modifica la cronologia dei commit ergo va usato raramente. Il comando, una volta lanciato, sposta il HEAD al commit indicato e scarta tutto ciò che viene dopo.

Soft reset

Tra le opzioni dell’eseguibile reset, abbiamo --soft che specifica di non eliminare le modifiche aggiunte da un git add ma non validate.

1
git reset --soft HEAD~1

Hard reset

L’altra opzione è --hard, che ripristina l’ultimo commit e rimuovere anche tutte le modifiche non ancora validate.

1
git reset --hard HEAD~1

Conclusione

Abbiamo imparato due modi per annullare l’ultimo commit e compreso quando usare uno piuttosto che l’altro. Ora, se vi siete accorti che l’ultimo commit non avrebbe dovuto essere validato, sapete come ripristinare la situazione!

Realizzato con Hugo
Tema Stack realizzato da Jimmy