Come eliminare i commit in GIT

di Lorenzo Neri
0 commento 95 visualizzazioni

Se te lo stai chiedendo non esiste un comando stile “delete”, di fatto in questo articolo scopriamo assieme come eliminare i commit in GIT.

GIT si sa, è un mondo un po’ strano, fatto di troppi comandi e poca sostanza, ma sappiamo bene quanto sia comodo: ne ho parlato qui 😉

In base a dove ti trovi nel repository e come vuoi risolvere la faccenda, dobbiamo analizzare caso per caso per capire come eliminare i commit in un branch GIT.

Sei posizionato sul commit da eliminare

In questo caso, le cose sono davvero semplici.

Se sei già posizionato sul commit che vuoi eliminare, ti è sufficiente eseguire il seguente comando:

git reset --hard HEAD~1

Ci sono da fare alcune raccomandazioni importanti da fare, prima di passare alla spiegazione.

Il flag “–hard” elimina le modifiche all’interno della tua working directory. Perciò: assicurati di aver eseguito lo stash di TUTTE LE MODIFICHE IN LOCALE!

Ciò detto, questo comando semplicemente esegue il reset di HEAD al commit precedente, rimuovendo di fatto il riferimento al commit in cui sei posizionato.

Vuoi eliminare un commit ben specifico

In questo caso, prima di procedere, devi essere a conoscenza dell’hash del commit da eliminare.

Per farlo, è sufficiente eseguire una “git log”. Fatto ciò, per eliminare quel commit:

git reset --hard <hash-del-commit-da-eliminare>

Vuoi eliminare un commit già pushato

Dopo aver visto come eliminare i commit in un branch in GIT in locale, vediamo come fare per i commit pushati nel repository remoto.

Per poterlo fare, è sufficiente:

git push origin HEAD --force

Ma le cose non stanno proprio come ti puoi immaginare!

Se altri tuoi colleghi hanno già eseguito il pull, è meglio se esegui questa procedura di pulizia in un nuovo branch.

Perchè?

Quando loro avranno eseguito il pull, il commit incriminato e il loro lavoro subiscono l’operazione di merge, di conseguenza quando eseguirai la pull ti troverai nuovamente il commit fra i piedi.

Come fare allora?

Se hai già eseguito la push del commit, è preferibile usare un altro comando:

git revert

Quello che succede con la revert, è la creazione di un immagine del commit.

E cosa?

Annulla i cambiamenti, applicando il processo di annullamento anche per i tuoi altri colleghi.

Ma, c’è un ma.

Entrambi i commit appariranno nel log, quindi da un punto di vista delle modifiche effettive dei file saranno sì “spariti”, ma saranno ugualmente nella storia del repository.

E con questo, abbiamo visto come poter eliminare davvero i commit all’interno di un repository GIT in ogni loro variante possibile.

Potrebbero interessarti

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ù