Come eliminare i commit in GIT

di Lorenzo Neri

Se ti stai chiedendo come eliminare i commit in git, non esiste un comando “delete”, ma in questo articolo scoprirai come poterlo fare in base a tutte le situazioni.

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 😉

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!

Tra tutte le cose che mi ha davvero svoltato la vita in ambito lavorativo, GIT ha fatto una differenza CLA-MO-RO-SA!

Ed è per questo che non solo ho voluto scrivere questo articolo per aiutare te così come tanti altri che l’hanno letto, ma tutto l’intero blog e la categoria dove raccolgo tutti gli articoli legati a GIT!

Ed è per questo, che ho il piacere di accompagnarti in questa avventura!

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

Ammettiamo che sei attualmente “checkato” dunque attualmente posizionato sul commit che vuoi cancellare.

In questo caso le cose sono molto semplici:

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.

Come eliminare un commit specifico da git

Per eliminare un commit in particolare, 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 ed in seguito applicare il comando che abbiamo visto prima:

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

Come eliminare un commit già pushato

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

Per poterlo fare, è sufficiente eseguire l’aggiornamento all’origine remota come segue:

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.

Spero ti sia stato davvero di aiuto tutto questo! Fammelo sapere lasciando un commento qua sotto, oppure iscrivendoti alla mia newsletter per rimanere sempre aggiornato!

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ù