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?

Ankit Suri
fuente

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.

Karthik Bose
fuente
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á.

knagode
fuente
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

fantabolous
fuente
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>
Badr Bellaj
fuente
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
Taimoor Changaiz
fuente
¿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.

Franklin
fuente
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.

Kazim Noorani
fuente
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.
Rohith
fuente
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
Cosmo Scrivanich
fuente
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

Terence
fuente
1

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

Jack solitario
fuente
0

Confirmar cambios de fusión resolvió mi problema:

git commit -m "commit message"
sai
fuente
-12

Esto funcionó para mí:

git log
`git reset --hard <089810b5be5e907ad9e3b01f>`
git pull
git status
Plus1
fuente
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