Estou no ramo mybranch1
. mybranch2
é bifurcada mybranch1
e foram feitas alterações mybranch2
.
Então, enquanto mybranch1
eu fiz, git merge --no-commit mybranch2
isso mostra que houve conflitos durante a fusão.
Agora eu quero descartar tudo (o merge
comando) para que mybranch1
volte ao que era antes. Não tenho ideia de como faço para fazer isso.
git
git-merge
git-merge-conflict
Anshul
fonte
fonte
Respostas:
Git mais recente:
Isso tenta redefinir sua cópia de trabalho para qualquer estado que estivesse antes da mesclagem. Isso significa que ele deve restaurar as alterações não confirmadas antes da mesclagem, embora nem sempre seja possível fazê-lo de maneira confiável. Geralmente, você não deve se mesclar com alterações não confirmadas.
Antes da versão 1.7.4:
Esta é uma sintaxe mais antiga, mas faz o mesmo que o acima.
Antes da versão 1.6.2:
que remove todas as alterações não confirmadas, incluindo a mesclagem não confirmada. Às vezes, esse comportamento é útil mesmo em versões mais recentes do Git que suportam os comandos acima.
fonte
git reset --merge
as versões mais recentes. Eu tive umgit merge --abort
erro (sem fazer alterações) onde foigit reset --merge
bem-sucedido (e faz a coisa certa) no git 2.2.1.git merge --abort
seguido degit reset --merge
um conflito automático surgir do meu estoque.git merge --abort
funciona para mim, no entanto, me encontrei em uma situação em que fiz check-out em um estado HEAD desanexado e um dos meus arquivos tinha um estado "ambos modificados". Eu queria descartar tudo e voltar para uma filial, precisavagit reset --hard
,git merge --abort
me disse que não havia fusão para abortar (falta MERGE_HEAD).git merge --abort
não é possível recuperar seu estado anterior e, nesse caso, a "sintaxe antiga"git reset --hard
faz o truque.Na verdade, vale a pena notar que
git merge --abort
é apenas equivalente aogit reset --merge
queMERGE_HEAD
está presente. Isso pode ser lido na ajuda do git para o comando mesclar.Após uma mesclagem com falha, quando não há
MERGE_HEAD
, a mesclagem com falha pode ser desfeita,git reset --merge
mas não necessariamente comgit merge --abort
, portanto , elas não são apenas uma sintaxe antiga e nova para a mesma coisa .Pessoalmente, acho
git reset --merge
muito mais útil no trabalho diário.fonte
git stash apply
um ramo errado egit merge --abort
não fez nada (nãoMERGE_HEAD
), enquantogit reset --merge
fazia o truque.git merge --abort
é o novo comandogit reset --merge
e me deparei com o mesmo problema que o @geomaster. Isso foi super útil, obrigado!Supondo que você esteja usando o git mais recente,
fonte
Há duas coisas que você pode fazer primeiro desfazer a mesclagem por comando
ou
você pode ir temporariamente ao seu estado de confirmação anterior por comando
fonte
Sourcetree
Se você não confirmar sua mesclagem, clique duas vezes em outro ramo (= checkout) e, quando o sourcetree perguntar sobre como descartar todas as alterações, concorde
fonte