índice solucionar salir primero por necesita error desde consola conflictos como actual git git-merge merge-conflict-resolution

solucionar - git-El mismo archivo agregado por ambas ramas causa un conflicto de fusión extraño



resolver conflictos git pull (3)

Actualmente tengo dos sucursales en las que estoy trabajando. Debido a una actualización de software tuve que cambiar completamente la estructura de la carpeta. Por eso muevo los archivos en ambas ramas. Ahora llegué a un punto en el que quiero unir mi rama de trabajo con mi rama principal.

El problema es que hay conflictos de combinación que me dicen que solo una rama added by them un archivo ( added by them o added by us ). El problema es que el archivo ha sido agregado por ambas ramas.

Por ejemplo, tengo una textura en textures/texture1.png . La rama maestra simplemente la movió a la ubicación correcta (antes de misc/textures/texture1.png ). La rama de trabajo lo movió exactamente a la misma ubicación y luego lo editó. El conflicto de fusión para este archivo dice:

added by us: textures/texture1.png

El punto es que este no es el archivo que quiero! Quiero el archivo de la otra rama!
Cuando lo hago

git checkout --theirs textures/texture1.png

yo obtengo

error: path ''textures/texture1.png'' does not have their veresion

Pero este archivo existe! Lo agregué recientemente! Y ese es el archivo que quiero.

¿Cómo resuelvo estos conflictos?

(mas informacion si es necesario!)


Mientras resuelve los conflictos, use git checkout indicando el árbol correcto (nombre de rama, etiqueta, sha1 de la confirmación ...) desde donde desea obtener un archivo:

git checkout theirBranchYouAreMerging -- textures/texture1.png

Si no desea todos los cambios "su", puede cancelarlos parcialmente. Para eso necesitarías git reset -p para eliminar selectivamente cualquier cambio no deseado del índice, y luego git checkout para eliminarlos del directorio de trabajo también:

git checkout theirBranch -- some/file.txt git reset -p -- some/file.txt git checkout -- some/file.txt


Siempre puedes intentar

git mergetool

esto abrirá una GUI, donde puede elegir los cambios deseados haciendo clic en los enlaces correspondientes. A veces hay que hacer cambios manuales. Pero en tu caso solo tienes que seleccionar una imagen de archivo.


a--b--c--M--d--f--E--g--h--i <<< master / / x--M''--y--z <<< you

¿Su situación se parece a la de arriba (donde M y M ''son los movimientos de confirmación y E es el compromiso que edita las texturas)? intenta fusionar z / i y git no es realmente feliz.

puede intentar fusionar M con M ''en una rama temporal

a--b--c---M--d--f--E--g--h--i <<< master / / / X <<< helper / / x--M''--y--z <<< you

y luego fusione el ayudante ("X") con usted ("z") y el maestro ("i").

a--b--c---M--d--f--E--g--h--i <<< master / / / / X-----XX---------XXX <<< helper / / / x--M''--y--z <<< you

De esa manera, los conflictos se resuelven directamente después de que se crean y no se llevan. A menudo esto es más fácil porque los conflictos tienden a crecer con el tiempo.