En este minitutorial, vamos a explicar una forma de deshacer un merge realizado en un repositorio Git. Vamos a partir de la situación que se muestra en la siguiente imagen:
de un repositorio Git con dos ramas, rama_1 y rama_2 y se realiza un merge de rama_2 en rama_1:
$ git merge rama_2
Con lo que el repositorio quedará como se muestra a continuación:
Puede darse el caso que este merge se haya realizado por error o simplemente por alguna prueba de mezcla de código entre miembros del equipo para ver si existe conflicto, por ejemplo. En cualquier caso, si se quiere dar marcha atrás y deshacer el merge, puede hacerse de la siguiente manera.
Lo primero, será localizar el commit al que se pretende volver, con el comando git log
:
$ git log
commit 68e980596d6d7129ef9e2c087bf968b918dfc035
Merge: f276278 ccedf4c
Author: Vabadus
Date: Wed Apr 29 13:17:32 2015 +0200
Merge branch 'rama_2' into rama_1
commit ccedf4c914029747f2a0b2aa6384c5005f62a3c6
Author: Vabadus
Date: Wed Apr 29 13:17:10 2015 +0200
Un cambio
commit f27627852cc1ffd952e51f755c93cec7482bd61f
Author: Vabadus
Date: Wed Apr 29 13:16:21 2015 +0200
Otra modificación
commit 26bbd1a92211d0c3f750caada96a5162929f0673
Author: Vabadus
Date: Wed Apr 29 13:16:01 2015 +0200
Una modificación
commit e455faaaba80b83ab073b15ad6a5bcce3a6b4ff0
Author: Vabadus
Date: Wed Apr 29 13:00:22 2015 +0200
Crea repositorio
En este caso, será al commit f27627852cc1ffd952e51f755c93cec7482bd61f. Entonces, solo habrá que lanzar el siguiente comando para dar marcha atrás:
$ git reset --hard f27627852cc1ffd952e51f755c93cec7482bd61f
HEAD is now at f276278 Otra modificación
Si volvemos a mirar el estado del repositorio, veremos que se encuentra de nuevo como antes de realizar el merge: