Articolo originale: How to undo changes in Git

Potresti già sapere che Git è come un sistema di punti di salvataggio. Quello che in genere impari con Git all'inizio è come salvare le tue modifiche ed eseguire un'azione di commit verso un repository remoto. Ma come fare per ripristinare una modifica e tornare a uno stato precedente?

È ciò che andremo a trattare all'interno di questo articolo.

Il contenuto di questo articolo è anche esposto in un video (risorsa in inglese) se preferisci imparare guardando invece che leggendo.

Locale contro Remoto

È più complicato ripristinare qualcosa che si trova già su remoto. Ecco perché vorrai mantenere le cose sulla tua macchina locale fino a quando sei praticamente sicuro che vadano bene.

Quattro scenari comuni

Tratteremo i quattro scenari seguenti:

  1. Eliminare modifiche locali
  2. Correggere il commit precedente
  3. Ripristinare lo stato del codice a un commit precedente
  4. Ripristinare un commit che è stato inviato al repository remoto

Nota: Nelle videate che seguono, ho usato il client Git Fork for Mac OS.  Puoi fare altrettanto in altri client Git simili.

Scenario 1: Eliminare modifiche locali

In questo primo scenario ipotizziamo che hai effettuato alcune modifiche che non sono ancora state oggetto di commit, e vuoi eliminarle.

Diciamo di voler creare una nuova funzionalità. Aggiungeremo un poco di HTML e CSS al progetto:

<!--Nel file index.html-->
<div class="feature"></div>
/* Nel file CSS */
.feature {
  font-size: 2em; 
  /* Altri stili */
}

Per eliminare queste modifiche:

  1. Vai all'area di staging
  2. Seleziona i file dai quali vuoi eliminare le modifiche
  3. Click destro sui file
  4. Seleziona "Discard changes"
0*6JjR02sGP4FgM6zj

Scenario 2: Correggere il commit precedente

In questo caso hai creato un commit ma hai dimenticato di aggiungere alcune modifiche e vuoi aggiungere dette modifiche nel messaggio di commit precedente.

  1. Vai all'area di staging
  2. Porta i file da inserire nel commit nell'area di staging
  3. Clicca sulla casella di spunta "Amend"
  4. Modifica il tuo messaggio di commit
  5. Esegui il commit
0*1wkCc2i9X8JWsBz4

Scenario 3: Ritornare a un commit precedente

Hai già effettuato alcuni commit nel tuo repository locale. Decidi che non vuoi più questi commit e vuoi "caricare" i tuoi file da uno stato precedente.

  1. Vai a "Git History"
  2. Click destro sul commit verso il quale vuoi ritornare
  3. Seleziona "Reset nome-branch to here"
0*IwWQ9XZNRmCaVvb8
Nota: Puoi ritornare solo a commit che non sono stati ancora inviati al repository remoto.

Scenario 4: Annullare un commit che è stato inviato a un remoto

In questo caso hai un commit che è stato già inviato a un repository remoto e vuoi annullarlo.

Annullarlo significa ripristinare la situazione precedente creando un nuovo commit "al contrario". Se hai aggiunto una riga, questo commit la eliminerà. Se hai eliminato una riga, questo commit la aggiungerà nuovamente.

Per fare questo:

  1. Vai a Git history
  2. Click destro sul commit che vuoi annullare
  3. Seleziona "Revert commit"
  4. Assicurati che  "commit the changes" sia spuntato.
  5. Click su Revert
0*29rgArX4rXn3aH6x
0*fUD5rUESrzaMnbXu

Altri scenari

GitHub ha un utile articolo che ti mostra come puoi ripristinare praticamente qualsiasi cosa con Git. Ti sarà utile qualora dovessi fronteggiare altre situazioni. Leggilo qui (risorsa in inglese).

Grazie per la lettura. Questo articolo ti è stato d'aiuto in qualche modo? In questo caso mi auguro che tu lo voglia condividere. Potresti aiutare qualcuno. Grazie!

Questo articolo è stato originariamente pubblicato sul mio blog.
Iscriviti alla mia newsletter se vuoi più articoli che ti aiutino a diventare uno sviluppatore migliore.