git – fusión de ruinas de rebase

Tenía dos twigs, ambas independientes. Trabajé en ellos en varios puntos durante un mes. Fui a fusionar una twig (llamémosla apple ) con la otra (llamémosle orange ) al revisar naranja y hacer git merge --no-ff apple y todo salió bien. En gitk, pude ver claramente que cada una de las twigs tenía su propia historia y se fusionó en una combinación de naranja.

Más tarde me doy count de que una confirmación en naranja es incorrecta, hay un error en el process de compilation y debo editar ese compromiso temprano en naranja. Yo uso git rebase -i HEAD~19 , elijo commit y change pick para edit . Así que edito la confirmación y todo está bien, y termino la rebase. Vuelvo a Gitk y toda la historia de las dos twigs es una historia lineal en naranja.

Entonces, ¿arruiné algo o es así como debería ser? Usé git reflog para volver a cuando hice la fusión, luego hice otro reinicio duro para volver a la derecha antes de la fusión en naranja, luego hice la rebase y corregí ese commit, luego de eso hice la fusión. Ahora todo se ve de la manera en que esperaría que las asignaciones de las twigs no estén entrelazadas.

Para reference futura, ¿alguien me puede decir cómo puedo volver a establecer las asignaciones en una twig donde me he fusionado en otra twig, sin terminar con compromisos entrelazados (historial lineal)?

Si mi terminología no es correcta, siéntase libre de editar esto. Gracias de nuevo

Solutions Collecting From Web of "git – fusión de ruinas de rebase"

Este es el comportamiento esperado de rebase. Efectivamente vuelve a escribir el historial de la twig, y ​​eso hace que (por defecto) pierda fusiones y otros metadatos, dejando una twig simplificada y directa.

Puede preservar las fusiones mediante el uso de

 git rebase --preserve-merges 

pero hay algunos problemas con la combinación --preserve-merges --interactive con --interactive . Ve con cuidado.