Git: revertir una fusión

    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 HEADy 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.

     

    Etiquetas:

    Deja una respuesta

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