Si fusiona una rama con otra y, por cualquier motivo, decide que desea deshacer la fusión, existen algunas formas de hacerlo con Git.
Te puede interesar:Git: cambiar la URL del repositorio remotoLa 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í:
Te puede interesar:Git: agregar un nuevo control remoto a un repositorio$ 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.