cómo reestablecer estas comstackciones fusionadas complicadas con git

Actualmente tengo este complicado tree de compromisos fusionado:

* 36cd4ff merge commit to rebase 12 (master,origin/master,HEAD) |\ | * f8d22cf merge commit to rebase 11 | |\ | | * 4381ba4 merge commit to rebase 10 | | |\ | | | * c81227f commit to rebase 9 | * | | d16e5ca commit to rebase 8 * | | | c277df7 good 7 * | | | e712ceb good 6 |/ / / * | | 80e3baa good 5 * | | 1559030 good 4 |/ / * | e8bf45c good 3 * | 4ca2d92 good 2 |/ * d43f5ac good 1 

Me gustaría algo así (para reescribir el historial limpio con un git push --force ):

 * 36cd4ff merge commit to rebase 12 * f8d22cf merge commit to rebase 11 * 4381ba4 merge commit to rebase 10 * c81227f commit to rebase 9 * d16e5ca commit to rebase 8 | * c277df7 good 7 * e712ceb good 6 * 80e3baa good 5 * 1559030 good 4 * e8bf45c good 3 * 4ca2d92 good 2 * d43f5ac good 1 

Si hago git rebase -i HEAD ~ 6, solo aparecen estos commits:

 pick 80e3baa good 5 pick e712ceb good 6 pick c277df7 good 7 pick d16e5ca commit to rebase 8 pick c81227f commit to rebase 9 pick 4381ba4 merge commit to rebase 10 

donde estos commits se han ido?

 * f8d22cf merge commit to rebase 11 * f8d22cf merge commit to rebase 11 

Hasta ahora, la única 'solución' que ha funcionado ha sido clonar el repository y comenzar desde c277df7 good 7 , copyr files del repository de origen y hacer un commit.

si rebase, resolverá todos sus conflictos de combinación con la rebase … por lo que no necesita confusiones de fusión separadas … así que primero revierta todas las confusiones de fusión y luego intente lo siguiente:

hasta que "buen 7" tengas una línea de compromiso directa, después de eso tendrás que poner cada compromiso en la parte superior del tree (que tiene 7 como base)

poner rebase 8 encima de rebase 7:

 git rebase c277df7 d16e5ca 

luego pon 9 en 8:

 git rebase d16e5ca c81227f 

resuelve todos los conflictos de fusión en el path (es posible que tengas que hacer otras confirmaciones o modificar tu compromiso)

antes de hacer nada, le sugiero que haga una copy de security del repository haciendo una copy de la carpeta (puede rebobinar todo con git reflog, pero a veces una copy es simplemente más fácil)

buena suerte

editar: si no quieres perder los "merge-commits", entonces puedes volver a establecer la base de toda "merge-commit-branch" sobre commit 8 haciendo rebase d16e5ca 36cd4ff (después de la primera rebase, por supuesto)