La receta es simple, basta con devolver la rama erróneamente mezclada (merge) a su estado anterior y forzar la actualización en el repositorio (push).

Sin embargo, hay que tener en cuenta que hay unos requisitos previos para garantizar que esto salga bien.

  1. Nadie, debe haber actualizado su espacio de trabajo con los cambios subidos al repositorio que queremos deshacer.
  2. El merge debe haberse hecho con la opción –no-ff (no fast-forward).
  3. No deben haberse realizado más commits después del del merge que queremos deshacer.

De estos tres requisitos el primero es el más importante, si deshacemos estos cambios habiendo actualizado otra persona su espacio de trabajo con el contenido del repositorio estaremos creando dos universos paralelos divergentes.

Los otros dos son más bien un «allá tú» si no los cumples. Es decir, puede que te funcione sin cumplirlos, pero si ese es tu caso, mejor mira en otros sitios donde se trate un caso más parecido al tuyo.

Así que si estás seguro de que cumples estos requisitos solo tienes que ejecutar este par de comandos:

git reset --hard <sha-commit-previo-a-merge>
git push <repositorio> <rama> --force

El sha-commit-previo-a-merge será la firma del commit previo al merge en la rama que queremos restaurar. Para saber exactamente cuál es el commit previo en la rama en la que hemos realizado el merge ejecutamos este comando:

git log --first-parent <rama>

El commit previo al del merge que se quiere deshacer (el actual si no hemos seguido haciendo commits, tal como indica el tercer requisito) será el que debemos proporcionar para el git reset.

Y eso es todo. Las referencias que he consultado, entre otras, para atreverme a ejectuar esos comandos en mi repositorio son las siguientes:

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes utilizar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.