Annullare un git merge che non è stato ancora pushato

di Lorenzo Neri

Per annullare un git merge che non è stato ancora pushato è sufficiente seguire tre passi semplici. Si tratta di individuare il commit precedente al merge e dunque effettuare un reset: in questo articolo scopriremo assieme come poter porre rimedio ad un merge indesiderato!

Di per sé può capitare a tutti di eseguire un merge e, purtroppo dopo, realizzare che non lo si voleva concretizzare: tuttavia puoi ancora salvarti se ne vuoi annullare gli effetti e non l’hai pushato! Ogni cosa ha suo tempo, come le presentazioni: 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 questa sezione del sito, ovvero tutto ciò che riguarda GIT e il versionamento, ho deciso di raccogliere tutte le soluzioni che ho trovato lungo la mia strada fatta di errori nel mondo lavorativo.

E quindi, perchè non condividerla con te che mi stai leggendo così da aiutarti?

Annullare un git merge che non è stato ancora pushato: il primo passo

Una delle cose più frustranti che può capitarti durante l’esecuzione di un merge… è doverlo annullare prima di pusharlo.

Però, prima di capire come annullare un git merge che non è stato ancora pushato, dobbiamo trovare il commit che hai fatto prima di eseguire il merge.

Come fare? Semplicemente così:

git reflog

Il comando “git reflog” a differenza di “git log” mostra tutti i commit in ordine di esecuzione, motivo per cui torna più “leggibile”.

Ciò detto, una volta individuato il commit precedente al merge, prendiamo il relativo HASH del commit e teniamola da parte. Ci servirà giusto ora.

Fatto ciò, procediamo ad eseguire il reset:

git reset --hard HASH_Del_Commit

Diversamente, possiamo usare:

git reset --hard HEAD~1

In questo modo annulliamo l’esecuzione del merge.

Ora che abbiamo capito come annullare il git merge prima ancora di averlo pushato, c’è da tenere presente una cosa prima che tu vada nel panico.

Tutti i file modificati verranno ripristinati al loro stato.

Come fare in un sol colpo

Vediamo una strada alternativa per fare ciò.

git reset --merge ORIG_HEAD

In questo modo, oltre a risolvere tutto con un solo comando succede un’altra cosa interessante.

I file non vengono ripristinati inutilmente, inoltre l’opzione “–merge” reimposta l’indice e aggiorna i file del working tree.

Non solo: mantiene le modifiche che non sono state ancora aggiunte.

Siamo salvi? Non del tutto.

Scrivere su questo blog può aiutare te, ma anche altre persone che conosci: se hai trovato utile questo articolo, non esitare a condividerlo!

Continua a scoprire di più con questi articoli!

2 commenti

Eliana 04/04/2022 - 10:28

grazie

Rispondi
Lorenzo Neri 04/04/2022 - 10:46

Ciao Eliana, grazie a te 🙂

Rispondi

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ù