Eliminar las confirmaciones duplicadas después de rebase y cherrypick en un repository público

Tengo un repository github de un proyecto de código abierto: Cubos . Por diversas razones, la rebase y el cherry-picking se aplicaron al repository de forma no muy cuidadosa. La historia también se editó debido a la información comprometida que no debía ser pública. Algunas acciones que abarcan varias confirmaciones parecen aplicarse a dos clones de forma independiente y luego los dos clones se fusionaron en uno, lo que resulta en aún más duplicates.

En resumen y honestamente: había una gran falta de higiene adecuada y la historia ahora es muy desorderada y networkingundante. Ver fotos a continuación.

Me gustaría eliminar twigs duplicadas completas del repository.

Preguntas:

  • ¿Cuál es el mejor enfoque para resolver este problema de debugging de una gran cantidad de confirmaciones duplicadas (en realidad, twigs duplicadas)?
  • ¿Cuáles son las alternativas a la database rebase git rebase -i ?
  • Si la rebase interactiva es el path a seguir, ¿qué tan dañino sería hacerlo en un repository público? Sé que hay recomendaciones de no hacerlo.

Algunas visualizaciones de la situación:

Ejemplo de confirmaciones duplicadas

Ejemplo de triples compromisos

Una forma de hacer que la historia se vea mejor sin reescribirla reemplaza las confirmaciones con " git replace ". Entonces corres:

 git replace --edit {commit} 

para el compromiso donde la twig "duplicada" se fusiona con y en la window del editor, elimine todas las líneas "principales" excepto la primera. Entonces no verás la twig en los clientes de git, aunque todavía estaría allí. Puede empujar y recuperar el reemploop con commands, para hacerlos visibles para todo el equipo:

 git push origin 'refs/replace/*:refs/replace/*' git fetch origin 'refs/replace/*:refs/replace/*'