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.

Mueva un commit de Git retrospectivamente a otra rama en el historial.

Por error, cometí un cambio general en una rama de desarrollo y ya lo fusioné con la rama master hace un tiempo:


* HEAD
* ...
*
* 2c884bc Actualizado el nombre del proyecto principal Gradle
* 4926f6a Fusionada la rama 'wip-dev-Logger'
|\
| * 43161fb Revisado Logger
| * 13c8303 Cambiado a JDA 4.4.0_351
* | 599c72e Agregada la interfaz Answerer
|/
* 4b0dcb8 Cambiado a Java 17
*
* ...
*

¿Es posible mover el commit 13c8303 de la rama de desarrollo a la rama master sin destruir el historial de fusiones/ramas?

Debería verse así:


* HEAD
* ...
*
* 2c884bc Actualizado el nombre del proyecto principal Gradle
* 4926f6a Fusionada la rama 'wip-dev-Logger'
|\
| * 43161fb Revisado Logger
* | 13c8303 Cambiado a JDA 4.4.0_351
* | 599c72e Agregada la interfaz Answerer
|/
* 4b0dcb8 Cambiado a Java 17
*
* ...
*

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible mover el commit 13c8303 desde la rama de desarrollo a la rama master sin destruir el historial de fusiones/ramas. Esto se puede lograr utilizando el comando git cherry-pick.

    Los pasos para hacerlo son los siguientes:

    1. Cambiar a la rama master:
      git checkout master
      
    2. Crear una nueva rama a partir del estado actual de la rama master:
      git branch temp
      
    3. Aplicar el commit 13c8303 en la rama temp:
      git cherry-pick 13c8303
      
    4. Mover el apuntador de la rama master al nuevo commit en la rama temp:
      git branch -f master temp
      
    5. Eliminar la rama temp:
      git branch -d temp
      

    Esto moverá el commit 13c8303 a la rama master sin destruir el historial de fusiones/ramas. El gráfico de commits resultante se verá como se muestra en la pregunta.

Comments are closed.