Ti è mai capitato di esserti accorto TROPPO tardi di aver fatto un commit con i file sbagliati nel tuo repository?
Succede a tutti!
Magari non hai ancora eseguito il push sul repository remoto e puoi salvare la faccia 😉
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
In questo articolo con quanto meno tecnichese possibile, ti spiegherò come cancellare i commit più recenti dal tuo repository!
Annullare il commit ed eseguire una “redo”
La prima cosa da fare, è senza dubbio annullare il commit ed eseguire una redo.

Creiamo lo scenario possibile, quello in cui probabilmente ti trovi in questo momento!
git commit -m “Un commit veramente brutto pieno di roba che non centra niente”
git reset HEAD~
<<modifica i file se necessario>>
git add <<i file che devi aggiungere DAVVERO questa volta>>
git commit -c ORIG_HEAD
Cerchiamo di capire cosa fa ogni comando.
- Il primo commit, è ciò che tu vorresti eliminare.
- Il reset che eseguirai, non va a modificare la tua working directory, in altre parole: i file che sono fisicamente sul tuo repository, tuttavia esegue un undo sul tuo commit.
Cosa fa l’undo in un repository
Quando esegui il comando “git reset” come ti ho mostrato, fa sì che i tuoi file minuziosamente modificati non vengano alterati, ma fa di più.
Annulla l’ultimo commit che hai eseguito e le modifiche sui file che hai eventualmente fatto, risulteranno come “unstaged”: in altre parole secondo GIT, queste modifiche risulteranno da “committare” se eseguirai la “git status”.
In altre parole dovrai eseguire nuovamente il commit prima di eseguire le VERE modifiche che vuoi committare!
Potrebbe capitare però, che tu quelle modifiche le voglia mantenere: ma ne vuoi aggiungere altre!
Come aggiungere altre modifiche o modificare il messaggio del commit che vuoi annullare
In questo caso, il secondo comando deve essere modificato in:
git reset –soft HEAD~
Che differenza c’è con quello precedente
Sostanzialmente le modifiche che hai fatto non vengono messe in unstaged ma restano lì. - Questo serve per eseguire le correzioni che ti sei dimenticato di fare 😉
- Questo comando ti servirà finalmente per eseguire un commit corretto e rimediare ai tuoi errori 😉
- Esegue il commit delle vere modifiche che eri intenzionato a committare, ma ti permette di riutilizzare il messaggio usato in precedenza!
Verrà aperto l’editor, in modo tale che tu possa modificarlo.
Se non vuoi modificarlo, ti basta modificare il flag da “-c” a “-C”: le maiuscole contano! - A questo punto, puoi eseguire un bel push 😉
Ed ecco come cancellare i commit più recenti fatti sul proprio repository, ma soprattutto: salvare la faccia con i colleghi 😀