Deshacerse de las twigs paralelas

Desafortunadamente, como un novato de Git, hice algunas cosas sucias y terminé con un logging de Git como este:

* 13c3cc7 (HEAD -> master, origin/master) everything merged |\ | * 9457922 some other stuff here * | 10b2e6f some stuff here |/ * 5453269 solid last version * ca9f9bf initial commit 

Como puede ver, los commits 10b2 y 9457 son paralelos, pero no se complementan entre sí.

Ahora, idealmente, quisiera una historia lineal que va desde 5453 a través de una o dos confirmaciones intermedias, hasta 13c3.

Jugado un poco con rebase, pero fue en vano. Gracias.

una rebase interactiva debería hacer el truco. Tratar

 git rebase -i ca9f9bf 

luego ajusta los commits como quieras. Por ejemplo, puedes aplastar múltiples juntos:

 pick 5453269 pick 10b2e6f fixup 9457922 pick 13c3cc7 

O simplemente déjelos tal como están, y deberían terminar siendo linealizados.

A less que tengas algunas restricciones externas que te obliguen a proporcionar una historia lineal, ni siquiera trates de "arreglar" esto: la historia es exactamente como sucedió, y git fue diseñada para manejar tales historias muy bien.

Cualquier bash de "arreglarlo" dará lugar a una historia diferente, que esencialmente será una mentira, con posibles consecuencias desagradables en el futuro. De hecho, harías tu historial más difícil de tratar en promedio.

Yo, por mi parte, produzco tal historia de bifurcación todo el time, incluso cuando soy la única persona que trabaja en un proyecto. Mi consejo es que simplemente te relajes y lo dejes como está.

No estoy seguro de cómo puedes limpiar esto de la manera que quieras. Podrías haber hecho una combinación de avance rápido antes si no hubiera conflicto, supongo. Pero ahora13c3 es un compromiso de fusión.

Creo que puedes limpiarlo con una sucesión de cherry-pick o directamente una rebase, pero no los uso, así que no voy a poder decirte exactamente qué hacer.

EDITAR: De lo contrario, un flujo no lineal no siempre es malo. Por ejemplo, en mi empresa, la regla es "Nunca fusionar avance rápido y siempre con un compromiso de fusión". Pero, por supuesto, depende si su compromiso en la twig principal fue un error como aquí.