Come annullare l’ultimo Git local commit

Se accidentalmente si esegue un commit dei file sbagliati, ma non si è ancora eseguito il push delle modifiche, si può facilmente tornare allo stato precedente usando pochi semplici comandi.

Ipotizziamo ora di aver eseguito erroneamente questo commit:

				
					git commit -m "Uno sfavillante commit errato"
				
			

Come annullare un commit errato

I comandi git da eseguire sono pochi, ma decisamente efficaci e sono condensati tutti qui:

				
					git reset HEAD

[modifiche ai file]

git add .
git commit -c ORIG_HEAD
				
			

Proviamo ora ad entrare maggiormente nel dettaglio spiegandoli uno a uno.

Primo step: git reset

Il primissimo passo è git reset, che è il comando responsabile dell’annullamento dell’ultimo commit lasciando il working tree (lo stato dei nostri file) intatto. Quindi se il nostro commit contiene sia file corretti che file errati, dobbiamo ricordarci che quelli corretti dovranno essere aggiunti nuovamente.

Secondo step: modifiche ai file

A questo punto possiamo eseguire tutte le correzioni necessarie nel nostro working tree modificando il codice o rimuovendo eventuali errori commessi.

Terzo step: git add

Possiamo ora aggiungere tutti i nuovi file che saranno oggetto del nuovo commit.

Quarto step: git commit

Questo passaggio è fondamentale, è infatti quando tutte le nuove modifiche vengono applicate con un nuovo (e corretto) commit. Il comando reset lanciato all’inizio aveva copiato il vecchio head in .git/ORIG_HEAD, ora il comando commit -c ORIG_HEAD apre un editor e mostra il messaggio del vecchio (ed errato) commit permettendoci così di modificarlo.

Conclusione

Dopo aver rimediato all’errore, se vogliamo inviare il nostro commit al server, possiamo eseguire un semplice e tradizionale push:

				
					git push
				
			

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come abilitare SSH Server su Fedora 17

Mi è capitato recentemente di dover installare in una macchina virtuale una vecchia versione a 32 bit di Fedora 17. Al fine di poter trasferire

Che cos’è log_cnt in una Postgres sequence

Uno scenario interessante su cui mi è capitato di lavorare riguarda l’utilizzo di una sequence in un database Postgres. In un applicazione containerizzata con Docker

Partners