Si fusiona una rama con otra y, por cualquier motivo, decide que desea deshacer la fusi贸n, existen algunas formas de hacerlo con Git.
La soluci贸n a esto es m谩s simple si a煤n no ha enviado los cambios a un repositorio remoto, y si lo ha hecho, es probable que deba confiar en algo como git revert
en lugar de la soluci贸n propuesta a continuaci贸n. En este breve art铆culo, explicar茅 c贸mo deshacer una combinaci贸n de Git que a煤n no se ha enviado.
El primer paso ser铆a utilizar reflog
para encontrar la confirmaci贸n justo antes de la fusi贸n:
$ git reflog
Ejecutar esto en su repositorio devolver谩 una lista de confirmaciones recientes, incluidos sus hashes abreviados, distancia desde HEAD
y descripci贸n. Se ver谩 algo como esto:
$ git reflog
8135d07 [email聽protected]{0}: commit (merge): Merge branch local/bug-34 into local/master
03979c8 [email聽protected]{1}: commit: Added support for query params
9f7a993 [email聽protected]{2}: commit (initial): Initial commit
Una vez que encuentre el compromiso al que desea volver, use el reset
comando, similar a lo que hicimos al volver a una confirmaci贸n anterior, que es esencialmente lo que estamos haciendo aqu铆:
$ git reset --hard <commit-hash>
Entonces, en el ejemplo anterior, es posible que deseemos volver a la confirmaci贸n con el mensaje “Se agreg贸 soporte para par谩metros de consulta”, lo que har铆amos as铆:
$ git reset --hard 03979c8
los --hard
La opci贸n revertir谩 el c贸digo en el 谩rbol, la preparaci贸n y las copias de trabajo. Si no quiere perder ning煤n cambio local que haya realizado, --merge
o --mixed
pueden ser mejores opciones para ti.
Si el compromiso al que quieres volver est谩 solo uno detr谩s HEAD
, entonces puedes usar ORIG_HEAD
como un atajo en el reset
mando:
$ git reset --hard ORIG_HEAD
Esto ser谩 m谩s f谩cil en algunos casos, ya que no tendr谩 que usar reflog
para encontrar el hash de confirmaci贸n. ORIG_HEAD
es aproximadamente equivalente a [email聽protected]{1}
, por lo que solo util铆celo si desea revertir una 煤nica confirmaci贸n.
Nota: Una vez que haya enviado los cambios a un repositorio remoto, no se recomienda revertir las confirmaciones de esta manera, ya que estar铆a borrando el historial. En ese caso, recomendar铆a usar el git revert
comando, que deshar谩 los cambios no deseados como una confirmaci贸n separada.