No ha concluido su fusión (MERGE_HEAD existe)


1036

Hice una rama llamada 'f' e hice un pago para dominar. Cuando probé el git pullcomando, recibí este mensaje:

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

Cuando lo intento git status, me dio lo siguiente:

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

¿Qué tengo que hacer?

Respuestas:


1920

OKAY. El problema es que su extracción anterior no se fusionó automáticamente y pasó al estado de conflicto. Y el conflicto no se resolvió adecuadamente antes del próximo tirón.

  1. Deshaga la fusión y vuelva a tirar.

    Para deshacer una fusión:

    git merge --abort [Desde git versión 1.7.4]

    git reset --merge [versiones anteriores de git]

  2. Resuelve el conflicto.

  3. No olvide agregar y comprometer la fusión.

  4. git pull ahora debería funcionar bien.


2
Intenté y me dio conflicto en los archivos (cuando lo extraje) Aplicación de fusión automática app / views / layouts / application.html.erb Combinación automática log / development.log CONFLICTO (contenido): Combinar conflicto en log / development.log Combinación automática log / restclient.log CONFLICT (contenido): conflicto de fusión en log / restclient.log Falló la fusión automática; arregle conflictos y luego confirme el resultado. Arreglé los archivos locales especificados, y luego probé 'git pull'. Pull no es posible porque tienes archivos no fusionados. Por favor, corríjalos en el árbol de trabajo y luego use 'git add / rm <file>' según corresponda para marcar la resolución, o use 'git commit -a'.
Ankit Suri

1
@AnkitSuri, después de arreglar los conflictos, ¿los montaste y te comprometiste?
Karthik Bose

1
Lo intenté y me ayudó a volver a fluir. Después de volver atrás intenté "git mergetool". Se asocia directamente con la herramienta de fusión.
Código

44
No 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, en realidad terminó funcionando. Como estaba trabajando en SSH, tuve que comenzar una nueva sesión y hacer una git status.
user1429980

98

Si está seguro de que ya resolvió todos los conflictos de fusión:

rm -rf .git/MERGE*

Y el error desaparecerá.


2
si elimina MERGE_HEAD, ¿la confirmación resultante no tendrá solo un elemento primario para que no tenga el historial de la rama fusionada?
Jason Goemaat

2
esto lo que quería
Raditya Gumay

1
@JasonGoemaat en mi caso, me estoy fusionando temporalmente en múltiples relaciones públicas que aún no se han aceptado. No planeo comprometer esas fusiones en la rama de características, solo las necesito durante el desarrollo.
Andy

Ya había resuelto mis conflictos y todavía recibía este error. Entonces el comando funcionó para mí.
Sibgha

Esto me salvó de un desagradable bucle de conflicto de fusión.
Sledge

68

Creo que vale la pena mencionar que hay numerosos escenarios en los que el mensaje You have not concluded your merge (MERGE_HEAD exists)podría ocurrir, porque muchas personas probablemente llegaron a esta página después de buscar dicho mensaje. La resolución dependerá de cómo llegaste allí.

git status Siempre es un punto de partida útil.

Si ya ha fusionado los contenidos de manera satisfactoria y sigue recibiendo este mensaje, podría ser tan simple como hacerlo.

git add file
git commit

Pero, de nuevo, realmente depende de la situación. Es una buena idea comprender los conceptos básicos antes de intentar cualquier cosa (mismo enlace que publicó Terence): Git - Conflictos básicos de fusión


Gracias por preguntar esto, para aquellos de nosotros con el tipo de problema más simple. "Git status" era lo que necesitaba un novato como yo, para recordar que el último paso para arreglar una fusión en conflicto era el simple comando "git commit".
Dana

17

Creo que esta es la forma correcta:

git merge --abort

git fetch --all

Entonces, tienes dos opciones:

git reset --hard origin/master

O si está en alguna otra rama:

git reset --hard origin/<branch_name>

2
solo git merge --abort trabajó solo && git pull entonces
luky

8

Resolví conflictos y también me comprometí, pero sigo recibiendo este mensaje de error en git push

Todos los conflictos se han solucionado pero aún estás fusionándote.
(use "git commit" para concluir la fusión)

Hice estos pasos para resolver el error:

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

¿Qué logra el pushfinal?
Mark Storer

6

Tratar

git reset --hard origin/trunk

'tronco' es la rama a la que estoy tratando de llegar.

No sé cómo o por qué funciona esto. Tenía algo que ver con un compromiso que hice, lo que obligó a mis solicitudes de extracción a fusionarse.


5

Intenta cambiar cualquier archivo temporal. Como eliminar cualquier espacio o agregar espacio y luego confirmar y enviar ese archivo.

git agregar 'archivo_cambio_temporal'

git commit -m "resolución de problemas de git"

origen de empuje git desarrollar

Y luego intenta git pull,

desarrollar origen git pull

Espero que esto te pueda ayudar.


4

Blockquote

Si está tratando de pasar de otra rama a su rama. Si estás viendo este error.

Primero, debe intentar hacer git commit y luego colocar otra rama en la suya.

  1. "git add".
  2. git commit
  3. Luego git pull de la rama requerida.

3

En mi caso, tenía una selección de cereza que produce una serie de conflictos de combinación, por lo que decido no completar la selección de cereza. Descarté todos mis cambios. Al hacerlo, me puse en un estado en el que recibí el siguiente error:

No ha concluido su fusión (MERGE_HEAD existe

Para solucionar el problema, ejecuté el siguiente comando git que solucionó el problema.

git cherry-pick --abort

2

El mejor enfoque es deshacer la fusión y volver a realizar la fusión. A menudo se daña el orden de las cosas. Intenta solucionar los conflictos y metete en un lío.

Así que deshaga, hágalo y fusione nuevamente.

Asegúrese de tener la configuración adecuada de herramientas diff para su entorno. Estoy en una Mac y uso DIFFMERGE. Creo que DIFFMERGE está disponible para todos los entornos. Las instrucciones están aquí: Instale DIFF Merge en un MAC

Tengo esto útil para resolver mis conflictos: Git Basic-Merge-Conflicts


1

primero, use git pullpara fusionar el repositorio guarde su cambio git commit -m "your commit". luego vuelva a escribir .


0

Confirmar cambios de fusión resolvió mi problema:

git commit -m "commit message"

-12

Esto funcionó para mí:

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

3
En primer lugar, esto eliminará todos los cambios en el directorio de trabajo. Además, la versión codificada no es útil, quizás algo como HEAD ^ es mejor.
Entomo

@ Plus1 Esto es exactamente lo que necesito: eliminar mis confirmaciones locales incorrectas y aplicar cambios con respecto al código fuente modificado. ¡Gracias por su respuesta!
amuliar el

Causó un problema en mi caso
Shafiq
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.