Git: Abortar um merge
Última atualização
Se um git merge gera conflitos e você prefere recuar em vez de resolvê-los, git merge --abort cancela o merge e restaura sua branch exatamente ao estado em que estava antes de você começar. É a saída limpa de um merge que deu errado.
Para um merge que já foi concluído, você o desfaz de forma diferente - veja abaixo. Experimente isto no terminal playground - um shell real no seu navegador.
Sintaxe
| Command | What it does |
|---|---|
git merge --abort | Cancela um merge com conflitos e restaura o estado anterior ao merge |
git reset --merge | Equivalente mais antigo - aborta e redefine o merge |
git merge --quit | Sai do merge mas mantém a árvore de trabalho como está |
Desfazendo um merge que já foi concluído
Diferente de abortar - o commit de merge já existe.
| Situation | Command |
|---|---|
| O merge é local, não foi enviado | git reset --hard ORIG_HEAD |
| O merge já foi enviado | git revert -m 1 <merge-hash> |
Perguntas frequentes sobre abortar merge no Git
Como cancelo um merge em andamento?
Execute
git merge --abort. Se um merge parou por causa de conflitos e você não quer resolvê-los, isso cancela toda a operação e retorna sua branch e árvore de trabalho exatamente ao estado em que estavam antes de o merge começar.Qual é a diferença entre git merge --abort e git reset --merge?
Eles fazem essencialmente o mesmo trabalho - cancelar um merge em andamento e restaurar o estado anterior ao merge.
git merge --abort é o comando moderno, criado especificamente para isso; git reset --merge é a forma mais antiga que ainda funciona. Prefira git merge --abort por clareza.Como desfaço um merge que já foi concluído?
Isso não é um abort, pois o commit de merge já existe. Se o merge for apenas local,
git reset --hard ORIG_HEAD move a branch de volta para onde ela estava antes do merge - funciona também após um fast-forward, onde HEAD~1 não funcionaria. Ele descarta o trabalho não commitado, então confira git status antes. Se você já enviou o merge, use git revert -m 1 <merge-hash> para revertê-lo sem reescrever o histórico compartilhado.Abortar um merge vai perder minhas outras alterações?
git merge --abort restaura o estado de imediatamente antes do merge, então as alterações do merge são descartadas, mas seu próprio trabalho commitado permanece intacto. Se você tinha alterações não commitadas antes de iniciar o merge, faça o commit ou o stash delas primeiro - abortar restaura o estado do commit anterior ao merge.Posso praticar isto online?
Sim. Abra o terminal playground para executar
git merge --abort em um shell real no seu navegador - nada para instalar. O curso interativo e gratuito de Git da Coddy também aborda merge e resolução de conflitos passo a passo.