Como concluir a fusão de um arquivo?

103

Depois de mesclar um arquivo no Git, tentei extrair o repositório, mas ocorreu um erro:

Você não concluiu sua fusão. (MERGE_HEAD existe)

Como alguém conclui uma fusão?

Muaz Al-Jarhi
fonte

Respostas:

94

Verifique o status ( git status) do seu repositório. Cada arquivo não mesclado (depois de resolver os conflitos por você mesmo) deve ser adicionado ( git add), e se não houver nenhum arquivo não mesclado você devegit commit

MBO
fonte
11
Mas e se tudo estiver confirmado ( git statusmostra um diretório de trabalho limpo) e o erro acima ainda ocorre?
Marius Soutier
1
@Marius Certifique-se de executar o padrão git statuse não algum alias que filtre qualquer mensagem. Na versão atual, quando você executa git status, ele mostra a mensagem o que você deve fazer para "concluir a fusão". E se você estiver absolutamente certo de que tudo foi mesclado e não perderá nada, você pode simplesmente remover os arquivos em .git / MERGE *, que armazenam o que você tentou mesclar e a mensagem de confirmação padrão para essa mesclagem
MBO
1
Obrigado, isso é o que eu finalmente fiz, mas de alguma forma, isso parece estar cheio de erros. Como pode existir um MERGE_HEAD se você fundiu e confirmou tudo?
Marius Soutier
2
Sim, eu simplesmente tive o mesmo problema que Marius, fiz uma fusão, resolvi os conflitos, mas nada a comprometer agora (de alguma forma). Tive que excluir manualmente os arquivos MERGE * conforme sugerido.
Simon East
@johndpope power ("tnx", 100)
knagode de
31

Nota e atualização:

Desde Git1.7.4 (janeiro de 2011), você tem git merge --abort, sinônimo de " git reset --merge" quando uma fusão está em andamento.

Mas se você quiser completar a fusão, enquanto de alguma forma nada resta a ser adicionado, então um bruto rm -rf .git/MERGE*pode ser o suficiente para o Git esquecer a fusão atual.

VonC
fonte
se você remover MERGE_HEAD, o commit resultante não terá apenas um pai, então você não terá o histórico do branch mesclado?
Jason Goemaat
@JasonGoemaat considerando que tentamos abortar a fusão, não haveria um "commit resultante" de qualquer maneira.
VonC
20

A solução mais fácil que encontrei para isso:

git commit -m "fixing merge conflicts"
git push
user3127648
fonte
Na verdade, para mim -m não funcionou, funcionou sem -m.
Aleksandar Pavić de
@ Muaz-Al-Jarhi Você deve olhar para a resposta do
usuário3127648
Você poderia explicar o que isso está fazendo?
Billal Begueradj
-m é apenas a bandeira para incluir uma mensagem
atamata
1

Se você encontrar esse erro no SourceTree, vá para Actions> Resolve Conflicts> Restart Merge.

A versão do SourceTree usada é 1.6.14.0

Cebu CM Solutions
fonte
0

Eu tive o mesmo erro e segui o artigo encontrado no google resolve meu problema. Você não concluiu sua fusão

Nirju
fonte
Um link para uma solução é sempre bem-vindo, mas adicione as informações essenciais à sua resposta, pois o link pode estar desatualizado.
slfan