Você não concluiu sua mesclagem (MERGE_HEAD existe)


1036

Fiz um ramo chamado 'f' e fiz um checkout para dominar. Quando tentei o git pullcomando, recebi esta mensagem:

You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.

Quando eu tento git status, ele me dá o seguinte:

On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 13 different commit(s) each, respectively.
#
# Changes to be committed:
#
#   modified:   app/assets/images/backward.png
#   modified:   app/assets/images/forward.png
#   new file:   app/assets/images/index_background.jpg
#   new file:   app/assets/images/loading.gif
#   modified:   app/assets/images/pause.png
#   modified:   app/assets/images/play.png
#   new file:   app/assets/javascripts/jquery-ui-bootstrap.js
#   new file:   app/assets/stylesheets/jquery-ui-bootstrap.css
#   modified:   app/controllers/friends_controller.rb
#   modified:   app/controllers/plays_controller.rb
#   modified:   app/mailers/invite_friends_mailer.rb
#   modified:   app/mailers/send_plays_mailer.rb
#   modified:   app/mailers/shot_chart_mailer.rb
#   modified:   app/views/friends/show_plays.html.erb
#   modified:   app/views/layouts/application.html.erb
#   modified:   app/views/plays/_inbox_table.html.erb
#   modified:   app/views/plays/show.html.erb
#   modified:   app/views/welcome/contact_form.html.erb
#   modified:   app/views/welcome/index.html.erb
#   modified:   log/development.log
#   modified:   log/restclient.log
#   new file:   tmp/cache/assets/C1A/C00/sprockets%2Fb7901e0813446f810e560158a1a97066
#   modified:   tmp/cache/assets/C64/930/sprockets%2F65aa1510292214f4fd1342280d521e4c
#   new file:   tmp/cache/assets/C73/C40/sprockets%2F96912377b93498914dd04bc69fa98585
#   new file:   tmp/cache/assets/CA9/090/sprockets%2Fa71992733a432421e67e03ff1bd441d8
#   new file:   tmp/cache/assets/CCD/7E0/sprockets%2F47125c2ebd0e8b29b6511b7b961152a1
#   modified:   tmp/cache/assets/CD5/DD0/sprockets%2F59d317902de6e0f68689899259caff26
#   modified:   tmp/cache/assets/CE3/080/sprockets%2F5c3b516e854760f14eda2395c4ff2581
#   new file:   tmp/cache/assets/CED/B20/sprockets%2F423772fde44ab6f6f861639ee71444c4
#   new file:   tmp/cache/assets/D0C/E10/sprockets%2F8d1f4b30c6be13017565fe1b697156ce
#   new file:   tmp/cache/assets/D12/290/sprockets%2F93ae21f3cdd5e24444ae4651913fd875
#   new file:   tmp/cache/assets/D13/FC0/sprockets%2F57aad34b9d3c9e225205237dac9b1999
#   new file:   tmp/cache/assets/D1D/DE0/sprockets%2F5840ff4283f6545f472be8e10ce67bb8
#   new file:   tmp/cache/assets/D23/BD0/sprockets%2F439d5dedcc8c54560881edb9f0456819
#   new file:   tmp/cache/assets/D24/570/sprockets%2Fb449db428fc674796e18b7a419924afe
#   new file:   tmp/cache/assets/D28/480/sprockets%2F9aeec798a04544e478806ffe57e66a51
#   new file:   tmp/cache/assets/D3A/ED0/sprockets%2Fcd959cbf710b366c145747eb3c062bb4
#   new file:   tmp/cache/assets/D3C/060/sprockets%2F363ac7c9208d3bb5d7047f11c159d7ce
#   new file:   tmp/cache/assets/D48/D00/sprockets%2Fe23c97b8996e7b5567a3080c285aaccb
#   new file:   tmp/cache/assets/D6A/900/sprockets%2Fa5cece9476b21aa4d5f46911ca96c450
#   new file:   tmp/cache/assets/D6C/510/sprockets%2Fb086a020de3c258cb1c67dfc9c67d546
#   new file:   tmp/cache/assets/D70/F30/sprockets%2Facf9a6348722adf1ee7abbb695603078
#   new file:   tmp/cache/assets/DA3/4A0/sprockets%2F69c26d0a9ca8ce383e20897cefe05aa4
#   new file:   tmp/cache/assets/DA7/2F0/sprockets%2F61da396fb86c5ecd844a2d83ac759b4b
#   new file:   tmp/cache/assets/DB9/C80/sprockets%2F876fbfb9685b2b8ea476fa3c67ae498b
#   new file:   tmp/cache/assets/DBD/7A0/sprockets%2F3640ea84a1dfaf6f91a01d1d6fbe223d
#   new file:   tmp/cache/assets/DC1/8D0/sprockets%2Fe5ee1f1cfba2144ec00b1dcd6773e691
#   new file:   tmp/cache/assets/DCC/E60/sprockets%2Fd6a95f601456c93ff9a1bb70dea3dfc0
#   new file:   tmp/cache/assets/DF1/130/sprockets%2Fcda4825bb42c91e2d1f1ea7b2b958bda
#   new file:   tmp/cache/assets/E23/DE0/sprockets%2Fb1acc25c28cd1fabafbec99d169163d3
#   new file:   tmp/cache/assets/E23/FD0/sprockets%2Fea3dbcd1f341008ef8be67b1ccc5a9c5
#   modified:   tmp/cache/assets/E4E/AD0/sprockets%2Fb930f45cfe7c6a8d0efcada3013cc4bc
#   new file:   tmp/cache/assets/E63/7D0/sprockets%2F77de495a665c3ebcb47befecd07baae6
#   modified:   tmp/pids/server.pid
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   Coachbase/
#   log/development.log.orig
#   log/restclient.log.orig

O que devo fazer?

Respostas:


1919

ESTÁ BEM. O problema é que sua atração anterior falhou ao mesclar automaticamente e entrou em estado de conflito. E o conflito não foi resolvido corretamente antes da próxima atração.

  1. Desfazer a mesclagem e puxar novamente.

    Para desfazer uma mesclagem:

    git merge --abort [Desde a versão 1.7.4 do git]

    git reset --merge [versões anteriores do git]

  2. Resolva o conflito.

  3. Não se esqueça de adicionar e confirmar a mesclagem.

  4. git pull agora deve funcionar bem.


2
Tentei e me causou conflito nos arquivos (quando puxado) Mesclando automaticamente app / views / layouts / application.html.erb Mesclando automaticamente log / development.log CONFLICT (conteúdo): mesclar conflito no log / development.log Mesclando automaticamente log / restclient.log CONFLICT (conteúdo): conflito de mesclagem no log / restclient.log Falha na mesclagem automática; conserte conflitos e depois confirme o resultado. Corrigi os arquivos locais especificados e tentei puxar 'git pull'. Não é possível porque você possui arquivos não mesclados. Por favor, corrija-os na árvore de trabalho e use 'git add / rm <file>' conforme apropriado para marcar a resolução ou use 'git commit -a'.
Ankit Suri

1
@AnkitSuri, Depois de corrigir os conflitos, você os encenou e se comprometeu?
Karthik Bose

1
Eu tentei e isso me ajudou a voltar a fluir. Depois de reverter, tentei "git mergetool". Associa-se diretamente à ferramenta de mesclagem.
CoDe 26/12

4
Não funciona:[env]$ git merge --abort fatal: You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge.
user1429980

1
@KarthikBose, na verdade, acabou funcionando. Desde que eu estava trabalhando no SSH, tive que iniciar uma nova sessão e fazer a git status.
user1429980

97

Se você tiver certeza de que já resolveu todos os conflitos de mesclagem:

rm -rf .git/MERGE*

E o erro desaparecerá.


2
se você remover MERGE_HEAD, o commit resultante não terá apenas um pai, assim você não terá o histórico do ramo mesclado?
precisa

2
isso o que eu queria
Raditya gumay

1
@JasonGoemaat no meu caso, estou mesclando temporariamente vários PRs que ainda não foram aceitos. Não pretendo confirmar essas mesclagens no ramo de recursos, só preciso delas durante o desenvolvimento.
Andy

Eu já havia resolvido meus conflitos e ainda estava recebendo esse erro. Então o comando funcionou para mim.
precisa saber é o seguinte

Isso me salvou de um desagradável conflito de mesclagem.
Sledge

68

Eu acho que vale a pena mencionar que existem vários cenários nos quais a mensagem You have not concluded your merge (MERGE_HEAD exists)pode ocorrer, porque muitas pessoas provavelmente chegaram a esta página depois de pesquisar a mensagem. A resolução vai depender de como você chegou lá.

git status é sempre um ponto de partida útil.

Se você já mesclou o conteúdo para sua satisfação e ainda está recebendo esta mensagem, pode ser tão simples quanto fazer

git add file
git commit

Mas, novamente, isso realmente depende da situação. É uma boa idéia entender o básico antes de tentar qualquer coisa (mesmo link que Terence postou): Git - Conflitos de mesclagem básicos


Obrigado por perguntar isso, para aqueles de nós com o tipo mais simples de problema. "Git status" era o que um novato como eu precisava, para ser lembrado que o último passo para corrigir uma mesclagem conflitante era o simples comando "git commit".
Dana20

17

Eu acho que este é o caminho certo:

git merge --abort

git fetch --all

Então, você tem duas opções:

git reset --hard origin/master

OU Se você estiver em outro ramo:

git reset --hard origin/<branch_name>

2
única merge git --abort si && trabalhou git pull então
luky

8

Resolvi conflitos e também cometi, mas ainda recebo essa mensagem de erro em git push

Todos os conflitos foram corrigidos, mas você ainda está mesclando.
(use "git commit" para concluir a mesclagem)

Eu executei estas etapas para resolver o erro:

rm -rf .git/MERGE*
git pull origin branch_name 
git push origin branch_name

O que pusho final realiza?
Mark Storer

6

Tentar

git reset --hard origin/trunk

'tronco' é o ramo que estou tentando acessar.

Não sei como ou por que isso funciona. Tinha algo a ver com algum commit que fiz que estava forçando meus pedidos de pull a fazer uma mesclagem.


5

Tente alterar qualquer arquivo temporário. Como apenas remova qualquer espaço ou adicione espaço e, em seguida, confirme e empurre esse arquivo.

git add 'temporary_change_file'

git commit -m "solução de problemas do git"

origem git push desenvolver

E então tente git pull,

origem puxar git desenvolver

Espero que isso possa ajudá-lo.


4

Bloco de citação

Se você está tentando puxar de outro ramo para o seu ramo. Se você está vendo esse erro.

Primeiro, você deve tentar fazer o git commit e depois puxar outro ramo para o seu.

  1. "git add".
  2. git commit
  3. Em seguida, git pull do ramo necessário.

3

No meu caso, eu tinha uma palheta de cereja que produz uma série de conflitos de mesclagem, então decido não concluir a paleta de cereja. Eu descartei todas as minhas alterações. Fazer isso me colocou em um estado em que recebi o seguinte erro:

Você não concluiu sua mesclagem (MERGE_HEAD existe

Para corrigir o problema, executei o seguinte comando git, que corrigiu o problema.

git cherry-pick --abort

2

A melhor abordagem é desfazer a mesclagem e executar a mesclagem novamente. Muitas vezes, você bagunça a ordem das coisas. Tente consertar os conflitos e coloque-se em uma confusão.

Então desfaça e junte novamente.

Verifique se você possui a ferramenta de ferramentas diff apropriada para o seu ambiente. Estou em um mac e uso DIFFMERGE. Eu acho que o DIFFMERGE está disponível para todos os ambientes. As instruções estão aqui: Instale a DIFF Merge em um MAC

Tenho esta solução útil para resolver meus conflitos: Git Basic-Merge-Conflicts


1

primeiro, use git pullpara mesclar o repositório, salve suas alterações git commit -m "your commit". em seguida, redigite .


0

Confirmar alterações de mesclagem resolveram meu problema:

git commit -m "commit message"

-12

Isso funcionou para mim:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status

3
Primeiro de tudo, isso excluirá todas as alterações no diretório de trabalho. Além disso, a versão codificada não é útil, talvez algo como HEAD ^ seja melhor.
entomo

@ Plus1 Isto é exatamente o que eu preciso - remova minhas confirmações locais erradas e aplique alterações com relação ao código-fonte alterado. Obrigado pela sua resposta!
amuliar

Causou um problema no meu caso
Shafiq
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.