Usando Git capita ogni tanto, vuoi per stanchezza o per distrazione, di lanciare commit sbagliate. Stamattina m’è capitato di sistemare del codice, testarlo e fare la commit… solo per scoprire di aver lavorato sulla branch sbagliata! Non è la prima volta che mi succede e non sarà nemmeno l’ultima. Poiché ho scarsa memoria ogni volta mi tocca usare google e ripescare quei due o tre comandi utili in questi casi. Ho pensato di appuntarli qui, un po’ per metterli a disposizione di tutti, un po’ per poterli ritrovare facilmente.
Annullare una commit
Se ancora non è stato stato eseguito il push verso un repo remoto:
In Git HEAD
è la commit più recente mentre HEAD^
è la penultima (HEAD^^
è la terzultima). In alternativa è possibile indicare l’SHA-1 dell’hash della commit alla quale si vuole tornare, qualunque essa sia:
Il numero di hash di ogni commit è rintracciabile con un semplice git log --oneline
Differenza tra --soft
e --hard
L’opzione --soft
cancella la commit ma lascia i file invariati. Se volete riportare anche i file allo stato in cui si trovavano alla penultima commit:
Questo porterà “indietro nel tempo” il vostro repo, alla penultima commit. Sarà come se le ultime modifiche (e con esse l’ultima commit) non fossero mai esistite.
E se la commit è già finita nel repository?
Se la commit è già stata inviata a un repo remoto (push) è necessario seguire un’altra procedura:
Questo comando crea una nuova commit che annulla tutto ciò che è stato introdotto dalla commit indesiderata.