Git reset vs git revert: quale usare?

di Lorenzo Neri
Published: Last Updated on

Git reset vs git revert: quale usare? Quali sono le differenze tra questi due comandi? In questo articolo ti guiderò nella scelta del comando più adatto alle tue esigenze, spiegandoti le principali differenze e mostrandoti esempi pratici!

Tra le funzionalità avanzate di Git troviamo due comandi fondamentali per alterare la storia del repository: git reset e git revert. Questi comandi permettono di annullare modifiche o ripristinare lo stato precedente con approcci differenti.

La domanda più comune è: quale comando dovrei usare e in quale situazione? Andiamo per gradi: iniziamo con un’introduzione ai due comandi e vediamo poi in dettaglio le differenze.

Ciao, sono Lorenzo Neri, un informatico. Questo articolo fa parte delle soluzioni che condivido sul mio blog, frutto di esperienze personali e lavorative. Spero che possa aiutarti a risolvere un problema che hai incontrato nel tuo percorso.

Iniziamo!

Quali sono le differenze di questi due comandi?

Vediamo le differenze tra questi comandi con un esempio pratico. Partiamo da una situazione comune:

Esempio di repository con commit

Immaginiamo di avere un repository semplice. Ho aggiunto una seconda riga a un file chiamato “file1.txt”. A un certo punto, mi accorgo che questa riga non è necessaria. L’obiettivo è rimuovere gli effetti del commit che ha introdotto questa modifica.

La prima soluzione che potrebbe venirti in mente è eliminare il commit. Per farlo, puoi utilizzare il comando git reset:

git reset --hard HEAD^

Questo comando rimuove il commit dalla cronologia e ripristina il file al suo stato precedente. L’effetto finale sarà il seguente:

Esempio di cronologia dopo git reset

Come puoi vedere, la seconda riga è sparita e il commit non esiste più nella cronologia. Git reset modifica la cronologia, cancellando i commit.

Ora, ripristiniamo la situazione iniziale. Supponiamo di voler rimuovere gli effetti della modifica, ma mantenendo traccia del commit originale nella cronologia. Qui entra in gioco git revert.

git revert HEAD

Ecco cosa accade dopo l’esecuzione di questo comando:

[master df939f0] Revert "aggiungo seconda riga" 1 file changed, 1 deletion(-)

La cronologia ora include un nuovo commit che annulla gli effetti del commit originale, mantenendo però traccia di entrambi. Questo è il risultato:

Esempio di cronologia dopo git revert

Git revert non elimina i commit, ma aggiunge un nuovo commit che annulla gli effetti del commit specificato. In questo modo, la cronologia è preservata e allungata.

Quando usare git reset e quando git revert?

Usa git reset quando vuoi eliminare completamente i commit dalla cronologia, ad esempio su un branch locale prima di condividerlo.

Usa git revert quando vuoi annullare modifiche ma mantenere traccia del commit originale nella cronologia, ad esempio su un branch condiviso.

Entrambi i comandi sono utili in base al contesto. È importante comprendere come influenzano la cronologia e la collaborazione nel tuo progetto.

Hai trovato utile questa guida? Condividila con i tuoi colleghi o iscriviti alla mia newsletter per ricevere altri articoli come questo!

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più