Reconfigure la fusión, después de una resolución de conflicto de combinación manual incorrecta

Después de resolver un conflicto de combinación y cometer, se hizo evidente que mi resolución de conflicto de fusión manual era incorrecta . Ya he organizado, comprometido y empujado el repository. ¿Cómo puedo volver a poner el file en conflicto en el estado conflictivo, de modo que pueda resolverlo de manera diferente?

Tenga en count que ya es demasiado tarde para que git checkout -m ya haya cometido la resolución de fusión incorrecta.

A partir de un directory de trabajo limpio, reiniciaré de nuevo antes de la fusión, iniciaré una nueva twig y realizaré la fusión nuevamente. A continuación, puede realizar una diferencia entre la bifurcación de resultado de combinación original y su nueva bifurcación para get un file de parche para aplicar en la bifurcación original. Dado que ya ha presionado su resultado, querrá crear un nuevo compromiso que corrija el compromiso de fusión en lugar de realizar un empuje de fuerza después de editar el historial.

Versión demasiado detallada:

Si su historial actual se ve algo así y c es la combinación de fusión que desea cambiar.

 a - c - d <-HEAD/master / b 

Comenzando desde un directory de trabajo completamente limpio.

 git branch old_merge <sha1 of c> // create branch for original merge git checkout -b new_merge <sha1 of a> // create and checkout branch before merge // re-merge branch 

Esto creará algo como esto …

  old_merge ∨ a - c - d <-master X b - c' <-HEAD ∧ new_merge 

Eso es probablemente muy confuso, pero espero que entiendas la idea. Ahora puede realizar una diferencia entre la twig old_merge y la twig new_merge para get los cambios que deberá realizar en el maestro.

 git diff old_merge..new_merge 

Puede usar la utilidad patch UNIX para aplicar la diferencia entre las dos twigs después de haber revisado el maestro nuevamente.

 git checkout master git diff old_merge..new_merge | patch -p1 

Espero que esto ayude. Avísame si estás confundido por algo.