'git reset –hard' Múltiples twigs networkingefinidas

Tengo una reference local que contiene algunas twigs que recientemente git rebase en:

 A---B---C---D master \ E---F---G topic1 \ H---I---J topic2 

Que lo convirtió en:

 A---B---C---D master \ E'---F'---G' topic1 \ H'---I'---J' topic2 

utilizando el siguiente set de commands:

 git checkout topic1 git rebase master git checkout topic2 git rebase topic1 

¿El problema?

Accidentalmente olvidé hacer git rebase --no-ff para hacer un seguimiento de todas mis twigs fusionadas previamente. Ahora, no tengo forma de decir fácilmente (usando gitk --all ) dónde se produjo mi fusión. Sé que sucedieron en algún lugar entre HEAD@{E} y HEAD@{J} , pero sin pasar por cada commit individualmente, estoy perdido.

Lo que he decidido hacer:

Por lo tanto, pensé que usaría git reflog como se sugiere aquí , junto con git reset --hard HEAD@{#} para volver al estado original antes de que se produjeran las dos rebases y luego intentara git rebase branchname --no-ff como sugerí

Mi última pregunta es esta (con algunos más):

¿Puedo simplemente regresar hasta la última confirmación antes de la primera rebase o necesito revertir cada una de las rebases de forma individual? ¿Cada una de las principales sucursales será exactamente como solía tenerlas (mostrando las fusiones remitidas no rápidas que estoy buscando)? ¿Estoy haciendo esto demasiado difícil / hay una manera más simple de hacer esto? ¿Algo en lo que descuide pensar?

Gracias.

Si restablece cada bifurcación a la confirmación que estaba activada antes de que se produzca la rebase de esa bifurcación, será como si nunca se hubiera realizado la rebase. Cada twig tiene su propia historia independiente de cualquier otra twig, por lo que tendrá que restablecer cada twig individualmente.

Por favor, eche un vistazo a git reflog . Tiene las references anteriores. Puede reiniciar a un compromiso desde el reflog haciendo un git reset --hard HEAD@{2} para get el segundo commit más reciente apuntado por HEAD. Lo mismo aplica para las twigs.

Incluso puedes hacer eso sin revisarlos así:

 git push . +topic1@{1}:topic1 git push . +topic2@{1}:topic2