¿Encontraste la fusión ascendente conflictiva en Git?

Nuestro equipo utiliza un flujo de trabajo de Git en el que se ramifica desde "maestro" a una twig de características (por ejemplo, "F-1234"), hacemos nuestro trabajo y luego fusionamos nuestra twig de características de nuevo en "integración".

Ocasionalmente hay conflictos de fusión cuando se fusiona con la integración. Se espera que solucionemos estos conflictos EN NUESTRA RAMA DE FUNCIONES, pero no podemos fusionar "integración" en nuestra twig de características. Tenemos que search la otra twig de características (por ejemplo, "F-4567") y fusionar esa twig.

Mi pregunta: ¿cómo puedo mirar hacia atrás en la integración y descubrir qué otra twig de característica está causando el problema?

Diles a "ellos" que "su" process está dificultando a los desarrolladores más de lo que las cosas deben ser.

Mientras tanto, para un file dado que está en conflicto (por ejemplo, foobar.c ), puede comenzar con algo como esto para identificar posibles fonts de conflicto:

 git log --all --merges integration -- foobar.c 

Esto debería mostrar todas las asignaciones de fusión en la bifurcación de integración que introdujo cambios en ese file. Con suerte, en el caso común, solo habrá una twig que modificó ese file, pero es posible que deba examinar varias twigs en algunos casos.

Hay una herramienta llamada "git-imerge" que, esencialmente, realiza todas las combinaciones de fusión posibles entre dos twigs. Al final, mantendrá solo el estilo que desee (ya sea rebase, merge, etc.).

Una de las cosas buenas de la herramienta es que identifica exactamente cuáles dos confunden y le permite resolver el problema en el par de compromiso más pequeño que tenga el problema. Entonces, puedes propagar la resolución hacia adelante. Es una herramienta bastante ingeniosa (cuando funciona, tuve algunos problemas con ella).