2011-05-16 21 views
6

Hice algo estúpido y accidentalmente fusioné una rama de tema en mi rama principal y luego la inserté en vivo en github (donde otros han sacado). Solo para asegurarme de que fue un error completamente idiota, lo saqué a mis servidores de producción.deshacer la combinación de git accidental sin historial de regresión

He avergonzado por la cantidad de tiempo adecuada y ahora tengo que encontrar la forma de deshacer los commits del código mientras avanza el historial de commits.

Para obtener mi código de producción para el pago correcto, ejecuté git checkout hashoflettersandnumbers y ese es el compromiso que deseo que sea la producción HEAD.

Ejecuto git reset hashoflettersandnumbers y luego git clean para eliminar los cambios de esa confirmación en adelante, pero parece que no puedo conseguir que el código sea la CABEZA de la rama principal y realice una nueva confirmación.

+0

+1 para "hacer [asegurarse] de que fue un error completamente idiota". [Mi reciente] Miseria ama a la compañía. – ruffin

Respuesta

5

Use git revert en cada una de las ramas. Esto creará un nuevo compromiso que preservará tu error por toda la eternidad, pero te devolverá el mismo árbol que tenías antes de fusionarte.

Por ejemplo, si 123456 es la fusión cometer ...

$ git checkout master 
$ git revert 123456 
$ git checkout topic-branch 
$ git revert 123456 

Esto supone que esto no era una combinación de "avance rápido".

+1

gracias @dietrich. Para mi propia referencia cuando googleo la próxima vez, es más seguro y más intuitivo volver a una confirmación estable, una confirmación a la vez y el uso de la bandera --no-commit para evitar compromisos uno a uno mientras retirarse. Además, use -m 1 para fusiones de fusión. – brycemcd

Cuestiones relacionadas