Git Abort Merge: annullare un merge
Ultimo aggiornamento
Se un git merge incontra dei conflitti e preferisci tornare indietro invece di risolverli, git merge --abort annulla il merge e riporta il branch esattamente allo stato in cui era prima di iniziare. È la via d'uscita pulita da un merge che è andato storto.
Un merge già completato si annulla in un altro modo, come vedi più sotto. Prova questi comandi nel terminal playground: una vera shell nel tuo browser.
Sintassi
| Comando | Cosa fa |
|---|---|
git merge --abort | Annulla un merge con conflitti, ripristina lo stato precedente |
git reset --merge | Equivalente più vecchio: interrompe e reimposta il merge |
git merge --quit | Esce dal merge ma lascia la directory di lavoro com'è |
Annullare un merge già terminato
È diverso dall'interruzione: il commit di merge esiste già.
| Situazione | Comando |
|---|---|
| Il merge è locale, senza push | git reset --hard ORIG_HEAD |
| Il merge è già stato inviato con push | git revert -m 1 <merge-hash> |
Domande frequenti su git abort merge
Come annullo un merge in corso?
Esegui
git merge --abort. Se un merge si è fermato per dei conflitti e non vuoi risolverli, questo comando annulla l'intera operazione e riporta il branch e la directory di lavoro esattamente come erano prima dell'inizio del merge.Che differenza c'è tra git merge --abort e git reset --merge?
Fanno sostanzialmente la stessa cosa: annullano un merge in corso e ripristinano lo stato precedente.
git merge --abort è il comando moderno pensato apposta; git reset --merge è il metodo più vecchio, che funziona ancora. Per chiarezza preferisci git merge --abort.Come annullo un merge già completato?
In questo caso non si tratta di un abort, perché il commit di merge esiste già. Se il merge è solo locale,
git reset --hard ORIG_HEAD riporta il branch dov'era prima del merge; funziona anche dopo un fast-forward, dove HEAD~1 non funzionerebbe. Scarta il lavoro non committato, quindi controlla prima git status. Se hai già fatto push del merge, usa git revert -m 1 <merge-hash> per annullarlo senza riscrivere la cronologia condivisa.Interrompere un merge mi fa perdere le altre modifiche?
git merge --abort ripristina lo stato di subito prima del merge, quindi le modifiche del merge vengono scartate, ma il tuo lavoro già committato resta intatto. Se avevi modifiche non committate prima di avviare il merge, fai prima commit o stash: l'abort ripristina lo stato del commit precedente al merge.Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire
git merge --abort in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche il merge e la risoluzione dei conflitti passo dopo passo.