Digamos que tengo un conflicto de fusión. Veo un archivo en conflicto como este:
Unstaged changes:
Unmerged Foo/bar/wibble/plop/elbow.txt
Puedo presionar la pestaña aquí para abrir los cambios y tal vez saltar a un punto dentro del archivo para arreglarlo a mano, pero si es un archivo grande con muchos conflictos, puede llevar mucho tiempo.
¿Cómo puedo pedirle a git, a través de magit, que revise la versión nuestra o la suya del archivo, para resolver el conflicto? Puedo copiar la ruta y luego usarla Shift-:
para ingresar un comando git personalizado, pero parece que debe haber un atajo de teclado para esto. No puedo ver nada obvio en el menú magit o en la ventana emergente ?
.
magit-status
y presionee
para iniciar la fusión de 3 vías conediff
. Otra alternativa es que en un búfer de conflictos, puede activar elsmerge-mode
resaltado de conflictos y realizar una fusión interactiva directamente en su búfer (no ediff). La combinación de teclas de prefijo parasmerge-mode
los comandos relacionados esC-c ^
; puede presionarC-c ^ C-h
para ver todas las combinaciones de teclas.k
en un conflicto y elegir qué versión mantener. ¡Se escucha perfecto! github.com/magit/magit/issues/1643Respuestas:
No estoy seguro de cuándo se agregó esta función, pero lo hace perfectamente:
Merging master
, yUnstaged changes
,Staged changes
. El archivo en conflicto está enUnstaged changes
k
para descartar los cambios (es decir, los cambios en conflicto)For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort
fuente
Hay varias soluciones:
M-x smerge-ediff
. Te pondrá en el modo de resolución de edificios, con cuatro búferes abiertos: el tuyo, el de ellos, la fusión y el búfer de comando. En el búfer de comandos, usan
yp
para ir al trozo siguiente o anterior, "a" o "b" para aceptar el cambio del primer o segundo búfer, o puede ir al búfer de fusión y editarlo a su gusto.e
en la versión estable de magit, oM-e
orM-m
(magit-ediff-resolve
) en la siguiente rama de magit, y luego se encontrará principalmente como en el primer casoC-c ^ n
yC-c ^ p
lo ayudará a pasar de un trozo al anterior o al siguiente, luego puede editarlos o usarC-c ^ o
para mantener la versión 'otra',C-c ^ m
mantener la versión 'mía',C-c ^ b
mantener la versión anterior versión yC-c ^ a
para mantenerlos a todos.fuente