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.

    Te puede interesar:Git: cambiar la URL del repositorio remoto

    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.

    Te puede interesar:Git: enviar etiquetas a un repositorio remoto

    El primer paso sería utilizar reflog para encontrar la confirmación justo antes de la fusión:

    Te puede interesar:Git: aplasta varios compromisos en un solo compromiso
    $ 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:

    Te puede interesar:Git: crear una nueva rama
    $ 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í:

    Te puede interesar:Codificación de longitud de ejecución
    $ 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.

     

    Rate this post

    Etiquetas: