Revertir twigs fusionadas con Git

Con nuestra configuration de Git, tenemos las siguientes twigs permanentes: – Maestro | – Fixes-xx – Versión – Desarrollar

Desarrollar es donde va nuestro código de desarrollo. Cuando estamos casi listos para el "lanzamiento", se fusiona en "lanzamiento" donde hacemos cambios adicionales de último momento antes de fusionarlo en "maestro" y labelrlo con una versión. Si se encuentra un error en una versión anterior, creamos una twig separada para que pueda ser reparada y se le dé una label de versión relevante.

Hemos cometido un error de novato en el que inadvertidamente fusioné un código experimental en versión (que estaba basado en el desarrollo), y luego un compañero de trabajo cometió un error similar poco después de que el lanzamiento se fusionara en una twig de arreglos. Así que la versión y las correcciones son básicamente una copy de nuestra twig de desarrollo.

Quiero volver, preferiblemente eliminando la confirmación del historial, ya que esto no fue un error de encoding, sino un completo desastre en la fusión. Pero he estado cavando y no puedo encontrar una manera clara de hacerlo con rebase. No puedo encontrar cómo ejecutar rebase para listr la confirmación que deseo eliminar. Parece fácil si hubiéramos cometido este error en el maestro.

Se agradece cualquier sugerencia sobre la mejor forma de recuperarse de esto. Han sido un par de compromisos desde entonces, así que no están en la cabeza.

Puedes deshacer fusiones de commit como cualquier otra confirmación con git reset. Por ejemplo, si quiere eliminar 1, 2 o 3 commits, una taquigrafía sería git reset HEAD~1 , git reset HEAD~2 , git reset HEAD~3 respectivamente.

Hasta ahora estarías editando tu tree de commit local. Si desea actualizar un server remoto, deberá ejecutar git push --force (tenga cuidado, la bandera de force puede ser la fuente de más problemas).

Como otros desarrolladores podrían haber retirado la confirmación problemática, es posible que, como va a cambiar la reference de la cabeza de bifurcación en el server remoto, sus clientes de git perderán su seguimiento. Entonces, la forma más fácil para que tengan una copy consistente es volver a git clone el repository. Esta es la causa por la que debe evitar usar la bandera --force . Por supuesto, hay muchas otras soluciones para evitar tener que volver a clonar todo. Pero son más difíciles de explicar y dependen de situaciones particulares.

Creo que mi respuesta está aquí: revertir los cambios realizados por fusión

No menciona rebase. Quizás rebase está fuera de cuestión para esta situación.