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