Problemas para fusionar los cambios ascendentes en mi twig

Me encuentro con conflictos al intentar fusionar los cambios preliminares en mi sucursal y no estoy seguro de cómo resolverlos.

Creé mi propio tenedor. Lo cloné Hice cambios en la twig de mi tenedor, me comprometí y empujé. Pero luego el tenedor principal se actualizó, y traté de actualizar mi propia horquilla fusionando la stream ascendente así:

$ cd repo-name $ git remote add upstream git://github.com/username/repo-name.git $ git fetch upstream $ git merge upstream/master 

La fusión dice que hay algún problema con un file y la fusión automática no funciona. Me dice que lo arregle yo mismo y me vuelva a fusionar. Así que en realidad fui al repository (en sentido ascendente) en GitHub de la horquilla principal y copié todo el código del nuevo file en el file en mi tenedor, y traté de fusionar de nuevo. Entonces, git me da este error:

fatal: 'fusión' no es posible porque tiene files no fusionados. Por favor, resuélvalos en el tree de trabajo, y luego use 'git add / rm' según corresponda para marcar la resolución y realizar un commit, o use 'git commit -a'.

¿Hay alguna discusión que estoy dejando afuera? ¿Estoy haciendo algo estúpido? ¿Qué significa "files no fusionados"? ¿No es el objective de fusionar files? ¿Tengo que comprometer mis cambios antes de fusionarme?

Lo que está viendo significa que la fusión automática no pudo resolver los conflictos en los files. Debe resolver estos conflictos manualmente. Ejecute git mergetool o git gui .

El command "git merge" intenta incorporar cambios desde otra twig a la twig actual. Si la fusión es limpia, es decir, no hay conflictos, se comprometerá. Dado que tu combinación tenía conflictos, no cometió ningún error. Debes resolver el conflicto.

Extraer la copy del repository de subida es una forma de hacerlo: aceptando la versión del repository de subida. Puedes hacer eso dentro de git usando "git checkout –the conflictording_file.txt"

La edición del file para get la forma que desea es de otra manera.

Una vez que se haya solucionado, debes agregar usando "git add conflicting_file.txt" y luego confirmar. Entonces su copy de trabajo está limpia y list para más piratería. Buena suerte.

En Git hay casos en que la fusión se niega a comenzar siquiera para proteger sus cambios locales. Esto puede suceder en dos casos:

  • Tiene cambios no confirmados en su repository que entran en conflicto con merge . El git se negará a fusionarse con el siguiente post:

     error: los cambios locales en los siguientes files se sobrescribirán mediante la fusión:
     foo
     Por favor, comprometa sus cambios o guárdelos antes de que pueda fusionarse.
     Aborto
    

    Luego debes confirmar los cambios primero ( git commit -a o git add + git commit ), o savelos con git stash save .

  • Estás en el medio de una operación de fusión sin terminar . Hubo algún conflicto, por ejemplo

     Foo auto fusionado
     CONFLICTO (contenido): Combina el conflicto en foo
     La fusión automática falló;  arregla los conflictos y luego compromete el resultado.
    

    y no ha terminado de resolver conflictos (editando files y marcándolos como resueltos con git add , o usando alguna herramienta de fusión gráfica a través de git mergetool ) y no creó una fusión final commit con git commit -a , o abortó la fusión con git reset --hard ( NOTA: esto descartará todos los cambios, ¡y perderá trabajo en la resolución de conflictos!).

    O simplemente has ejecutado la segunda git merge demasiado rápido, o has usado git merge lugar de git commit para crear una fusión de commit.

     error: 'fusión' no es posible porque tiene files no fusionados.
     pista: repararlos en el tree de trabajo,
     pista: y luego usa 'git add / rm' como
     sugerencia: apropiada para marcar la resolución y hacer una confirmación,
     sugerencia: o use 'git commit -a'.
     fatal: salir debido a un conflicto no resuelto.
    

    Resuelva conflictos como se describe, por ejemplo, en Old Fun con la finalización de un artículo de fusión de Junio ​​C Hamano y finalice una fusión con git commit , o descarte una combinación, o la guarde. Entonces, si quisiste crear esta segunda fusión, puedes hacerlo.

Nota: de forma pnetworkingeterminada, el aviso del shell git-aware muestra si estás en el medio de merge, rebase o aplicando parches (operación git am ). También puede configurarlo para mostrar si el directory de trabajo está sucio (diferente de la última versión, es decir, HEAD).

Después de que hayas resuelto una fusión, debes usar git add para agregar los files que has cambiado al índice, y luego confirmar (como dice el post). Esto dice: "Sí, realmente quiero hacer estos cambios".

Restring, siempre usa git add antes de cometer (ya sea normalmente o comprometiendo una combinación), si estás usando la interfaz de línea de command. Frontends como Magit pueden optimizar esto para que no tengas que preocuparte por tipear "git add" cada vez.

Ejecute git commit (después de agregar los files) la segunda vez, no git merge .

Además, la resolución de conflictos creará files para ayudarlo a fusionarse. Ver también git mergetool .