es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo revertir un antiguo merge en git en la rama master pero preservar futuros commits/merges.

Si un PR se ha fusionado en la rama principal (digamos PR b) y después se han fusionado un par de PR adicionales (digamos PR c, PR d, PR e) que realizaron cambios en los mismos/otros archivos aleatorios del repositorio; ¿cómo podemos revertir PR b pero mantener los cambios de los otros PRs?

Día 1      master
Día 2      prevMaster->b
Día 3      prevMaster->b->c
Día 4      prevMaster->b->c->d
Día 5      prevMaster->b->c->d->e

¿Cómo hacer esto?:

Día 6      prevMaster->c->d->e
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para revertir PR b pero mantener los cambios de las otras PRs (PR c, PR d, PR e), debemos seguir estos pasos:

    1. Identificar el hash del commit de fusión creado por PR b. Podemos hacer esto verificando el historial de commits en la rama principal o al revisar el mensaje de commit de fusión de PR b.
    2. Crear una nueva rama a partir de la rama principal actual. Llamémosla temp.

    3. Revertir el commit de fusión de PR b en la rama temp utilizando el siguiente comando:

      git revert -m 1 <hash-commit>
      

      Este comando crea un nuevo commit que deshace los cambios introducidos por el commit de fusión de PR b.

    4. Fusionar la rama temp en la rama principal utilizando el siguiente comando mientras aún estemos en la rama principal:

      git merge temp
      

      Este comando incorpora los cambios de PR c, PR d y PR e.

    5. Subir los cambios al repositorio remoto.

    El resultado final será un nuevo commit en la rama principal que ha revertido efectivamente los cambios introducidos por PR b, pero que todavía incluye los cambios de las otras PRs (PR c, PR d, PR e).

Comments are closed.