Hoy me enfrenté con un problema. Mi compañero de equipo creó una sucursal de la maestra. Desarrolló una característica en esta twig y luego desarrolló dos subfunciones en las twigs de la subfeature. Finalmente hizo dos refactorizaciones de todo el asunto. Asi que…
C--D E--F | subfeatures / \ / \ B------M1------M2--G--H | feature / A-------------------K | master
Por lo general, rebase las twigs de características antes de avanzar sin avanzar rápido hacia el maestro. Pero, por supuesto, esta rebase falla. La twig de características reajustada se vió como:
B'--C'--D'--E'--F'--G'--H' / A--K
Por supuesto, los indicadores de C y D se equivocaron, por lo que también obtuve dos twigs de subpoblación que crecen "desde el air". Entiendo cómo solucionarlo si subfeature branches no se fusionó en feature, pero en este momento estaba confundido. Escogí todo en la twig de recuperación re-estructurada y me fusioné nuevamente. ¿Hay aquí una manera más fácil de hacerlo?
Tenga en count que necesita un git1.7.6 + para git rebase --preserve-merges
para que funcione correctamente.
rebase --preserve-merges --onto
no funcionó antes (" git rebase --preserve-merges --onto
no preserva las fusiones ") rebase --preserve-merges
tenía problema en alguna instancia:
Para resumir: acabas de completar una combinación y alguien ha enviado un commit antes de que pudieras empujar el tuyo. La solución es hacer que Git esté al tanto de la fusión que hiciste.
git rebase --preserve-merges <upstream>
o
git rebase -p <upstream>
Pero hay un problema, si su fusión tuvo conflictos que usted resolvió, no serán recogidos por la maquinaria de rebase.
Y terminarás resolviendo los conflictos otra vez … al less este es el caso con la versión de Git 1.7.5.4
(Eso requeriría git rerere
)
¿Sacaste cada compromiso uno por uno a mano?
Simplemente ejecute la function git rebase -i master feature
y reescriba el historial como lo desee.