Supongamos que hay dos ramas, master
y slave
, y editan el mismo archivo y la misma línea. Inicialmente, el contenido del archivo es¿Cómo volver a formatear el parche después de la fusión en Git?
foo bar
continuación, en la rama slave
se edita para convertirse en
foo bar baz
Ahora el usuario de la rama slave
formatea el parche (git format-patch master
) y lo envía al usuario de la rama master
. En el mismo tiempo, en la rama master
el mismo archivo se edita y se convierte en
foo bar spam eggs
El parche no se puede aplicar, y pide master
slave
para combinar y hacer un nuevo parche. Cuando master
se fusiona en slave
y se resuelve el conflicto, es hora de volver a formatear el parche. El gráfico cometer ve así:
slave: master:
foo bar baz spam eggs
| \
| \
| foo bar spam eggs
| |
foo bar baz |
\ |
\ |
+--------- foo bar
El último commit (fusionar) en slave
parece:
@@@ -1,1 -1,1 +1,1 @@@
- foo bar baz
-foo bar spam eggs
++foo bar baz spam eggs
Sin embargo, si ahora corremos git format-patch master
, todavía nos llegan exactamente el mismo parche como antes, que no tiene en cuenta la fusión y resolución de conflictos:
@@ -1 +1 @@
-foo bar
+foo bar baz
¿Cómo se formatea un parche que se aplicaría contra el último máster? Me gustaría hacerlo sin rebase
.
Actualización: git format rev1..rev2
, donde rev1
y rev2
son cabezas de los master
y custom
ramas, respectivamente, no incluye los cambios relacionados con la resolución de conflictos. git-diff
formatea un parche válido, pero omite los mensajes de confirmación.
Uso parches, porque esto es lo que quiere el canal ascendente, y no tengo el control del flujo de trabajo. Tengo que formatear parches que tengan en cuenta la resolución de conflictos, porque también publico mi repositorio y no puedo volver a establecer la base. 'git diff', lamentablemente, no incluye mensajes de confirmación. – sastanin
Hay una manera de hacer una combinación tener solo uno de los padres. Un parche de eso te dará el resultado que necesitas. –
¿Se fusiona con solo uno de los padres? ¿Como es posible? ¿No se supone que 'git-merge'" une _dos o más historias de desarrollo juntas? – sastanin