¿Cómo concluir la fusión de un archivo?

103

Después de fusionar un archivo en Git, intenté extraer el repositorio pero apareció un error:

No ha concluido su fusión. (MERGE_HEAD existe)

¿Cómo se concluye una fusión?

Muaz Al-Jarhi
fuente

Respuestas:

94

Verifique el estado ( git status) de su repositorio. Todos los archivos no fusionados (después de que resuelva los conflictos usted mismo) deben agregarse ( git add), y si no hay ningún archivo sin fusionar, debegit commit

MBO
fuente
11
Pero, ¿qué pasa si todo está confirmado ( git statusmuestra un directorio de trabajo limpio) y el error anterior aún ocurre?
Marius Soutier
1
@Marius Asegúrese de ejecutar estándar git statusy no algún alias que filtra cualquier mensaje. En la versión actual, cuando ejecuta git status, le muestra un mensaje sobre lo que debe hacer para "concluir la fusión". Y si está absolutamente seguro de que tiene todo fusionado y no perderá nada, simplemente puede eliminar archivos en .git / MERGE *, que almacenan lo que ha intentado fusionar, y el mensaje de confirmación predeterminado para esa fusión
MBO
1
Gracias, eso es lo que finalmente hice, pero de alguna manera, esto parece tener errores. ¿Cómo puede existir un MERGE_HEAD si fusionaste y comprometiste todo?
Marius Soutier
2
Sí, tuve el mismo problema que Marius, hice una fusión, resolví los conflictos, pero nada que comprometer ahora (de alguna manera). Tuve que eliminar manualmente los archivos MERGE * como se sugirió.
Simon East
@johndpope power ("tnx", 100)
knagode
31

Nota y actualización:

Desde Git1.7.4 (enero de 2011), también tiene git merge --abort" git reset --merge" cuando una fusión está en curso.

Pero si desea completar la fusión, mientras que de alguna manera no queda nada por agregar, entonces un crudo rm -rf .git/MERGE*puede ser suficiente para que Git se olvide de la fusión actual.

VonC
fuente
si elimina MERGE_HEAD, ¿la confirmación resultante solo tendrá un padre, por lo que no tendrá el historial de la rama fusionada?
Jason Goemaat
@JasonGoemaat considerando que intentamos abortar la fusión, no habría un "compromiso resultante" de todos modos.
VonC
20

La solución más fácil que encontré para esto:

git commit -m "fixing merge conflicts"
git push
usuario3127648
fuente
En realidad, para mí -m no funcionó, funcionó sin -m.
Aleksandar Pavić
@ Muaz-Al-Jarhi Deberías mirar la respuesta del
usuario3127648
¿Podría explicar qué está haciendo esto?
Billal Begueradj
-m es solo la bandera para incluir un mensaje
atamata
1

Si encuentra este error en SourceTree, vaya a Acciones> Resolver conflictos> Reiniciar fusión.

La versión de SourceTree utilizada es 1.6.14.0

Soluciones Cebu CM
fuente
0

Tuve el mismo error y seguí el artículo que se encuentra en Google y resuelve mi problema. No has concluido tu fusión

Nirju
fuente
Un enlace a una solución siempre es bienvenido, pero agregue la información esencial a su respuesta, ya que el enlace puede estar desactualizado.
slfan