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
davy.ai
Para revertir
PR b
pero mantener los cambios de las otras PRs (PR c
,PR d
,PR e
), debemos seguir estos pasos:PR b
. Podemos hacer esto verificando el historial de commits en la rama principal o al revisar el mensaje de commit de fusión dePR b
.Crear una nueva rama a partir de la rama principal actual. Llamémosla
temp
.Revertir el commit de fusión de
PR b
en la ramatemp
utilizando el siguiente comando:Este comando crea un nuevo commit que deshace los cambios introducidos por el commit de fusión de
PR b
.Fusionar la rama
temp
en la rama principal utilizando el siguiente comando mientras aún estemos en la rama principal:Este comando incorpora los cambios de
PR c
,PR d
yPR e
.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
).