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 😉
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
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.
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!