Git se fusiona con más allá de comparar

Recientemente compré más de comparar pro para fusionar código compartido con git (del cual tengo una comprensión muy limitada). Ahora tengo dos twigs, un master y una feature . Hace poco saqué el master del control remoto, por lo que ahora el master tiene algunos compromisos por delante del antecesor común entre master y feature .

Dado que la feature mi sucursal tiene más eliminaciones, deseo fusionar el master en feature y no al revés (¿tiene sentido esto?). Así que básicamente lo hice

 git checkout master git pull origin master git push origin master 

Así que, en este punto, mi feature es un compromiso de pocos y algunos compromisos antes de master . Para fusionar las confirmaciones de master en la feature que hice:

 git checkout feature git merge master git mergetool 

Ahora me piden una serie de posts como

 Deleted merge conflict for 'ED/build/make/rules.mk': {local}: deleted {remote}: modified file Use (m)odified or (d)eleted file, or (a)bort? m Normal merge conflict for 'ED/src/driver/ed_model.F90': {local}: modified file {remote}: modified file merge of ED/src/driver/ed_model.F90 failed Continue merging other unresolved paths [y/n]? y 

Todos los demás files dan un error de combinación fallido sin siquiera abrir la herramienta de combinación beyondcompare para hacer la fusión.

  • El primer post dice (m)odified or (d)eleted , ¿significa esto que tengo que elegir qué file seleccionar entre local y remoto como resultado de la fusión?
  • El segundo aviso me dice que la fusión falló, ¿por qué está sucediendo esto?

EDITAR

La parte relevante de mi .gitconfig es

 [diff] tool = bc3 [difftool] prompt = false [difftool "bc3"] trustExitCode = true [core] fileMode = false symlink = false ignorecase = true [merge] tool = bc3 [mergetool "bc3"] trustExitCode = true [alias] difftool = difftool --dir-dif --no-symlinks 

El primer post dice (m) odified o (d) eleted, ¿significa esto que tengo que elegir qué file seleccionar entre local y remoto como resultado de la fusión?

Sí. Probablemente desee elegir el estado (d) elegido, suponiendo que desea que esos files permanezcan eliminados en su twig de feature y no le importa cómo se hayan modificado desde que los borró originalmente.

Normalmente, su master debe estar sincronizado con el control remoto en todo momento. Los cambios locales, como eliminar files, se realizan correctamente en una twig de feature mientras lo hace, así que eso es bueno. Si sus cambios son puramente locales, nunca destinados a convertirse en parte permanente del proyecto principal, permanecen en la twig de feature para siempre, y en ocasiones se fusiona de master a elemento cada vez que extrae actualizaciones nuevas del control remoto, exactamente como lo hace. . La única vez que desea fusionarse de feature a master y luego push es cambiar algo para todos los que usan el proyecto.

El segundo aviso me dice que la fusión falló, ¿por qué está sucediendo esto?

  • ¿Resolvió todos los conflictos mencionados en Beyond Compare (marcado con "!" En el margen)?
  • ¿Su columna del medio se ve de la forma que desea para cada diferencia?
  • ¿Guardó el file fusionado?

Si la respuesta a cualquiera de estos es "no", entonces regresas a git con los marcadores de fusión aún en el file, lo que significa "No terminé". En otras palabras, esa fusión "falló", lo que significa que no se completó completamente con éxito.

No me preocuparía que las direcciones de los files se vean mal. Cuando git intenta resolver una fusión, copy las tres versiones diferentes (remota, local, fusionada) en tres files temporales. Cuando termine de editar y fusionar, copyrá el file "fusionado" en su file local.

Todos los demás files dan un error de combinación fallido sin siquiera abrir la herramienta de combinación beyondcompare para hacer la fusión.

Esto parece extraño. Típicamente, git continuará uno por uno. Lo siento, no puedo ser de más ayuda aquí.

Si desea ver los conflictos no resueltos en Beyond Compare, puede ejecutar git mergetool que abrirá conflictos con su herramienta de fusión pnetworkingeterminada. Primero tienes que configurar git para usar Beyond Compare si aún no lo has hecho.

Instrucciones para configurar encontradas aquí .