
Al trabajar con Git en algunas situaciones puede surgir la necesidad de crear una nueva rama en Git que incluya solo algunos cambios de otra rama. Por ejemplo, si solo se necesita aplicar algunos cambios y no todos los realizados en la rama de desarrollo. Lo que se puede conseguir con comandos como git cherry-pick
, git checkout
y git diff
. En esta entrada se explicará cómo realizar la creación de una nueva rama en Git con solo algunos cambios de otra rama
Tabla de contenidos
- 1 ¿Por qué crear una nueva rama en Git con solo algunos cambios?
- 2 Paso 1: Identificar el punto base para la nueva rama en Git
- 3 Paso 2: Crear una nueva rama en Git desde el punto base
- 4 Paso 3: Seleccionar y aplicar los cambios necesarios
- 5 Paso 4: Verificar los cambios en la nueva rama
- 6 Paso 5: Subir la nueva rama a un repositorio remoto
- 7 Conclusiones
¿Por qué crear una nueva rama en Git con solo algunos cambios?
La capacidad de seleccionar cambios específicos y trasladarlos a una nueva rama es característica que puede facilitar la tarea de desarrollo en múltiples escenarios:
- Entrega de características específicas: Cuando se necesita entregar una funcionalidad parcial sin incluir el resto de los cambios en la rama.
- Solución de errores críticos: Aplicar una corrección importante sin afectar el resto de los desarrollos en curso.
- Preparación para revisiones o pruebas: Crear una versión con cambios seleccionados para revisión o pruebas específicas.
- Separación del trabajo en curso: Mantener un control más detallado dividiendo el trabajo en ramas más pequeñas.
Git ofrece herramientas como git cherry-pick
, git checkout
y git diff
que permiten realizar estas tareas de manera eficiente y sin complicaciones.
Paso 1: Identificar el punto base para la nueva rama en Git
El primer paso para crear una nueva rama en Git con solo algunos cambios es identificar el commit base. Este commit será el punto de partida para la nueva rama. Puede ser:

- El último commit en una rama principal, como
main
omaster
. - Un commit específico en la rama actual donde se hubiese publicado el trabajo por última vez.
Para identificar el commit base se puede recurrir al comando: git log --oneline
, lo que mostrará un historial resumido de commits. Supóngase que el historial del repositorio es como el que se muestra a continuación:
a1b2c3d Cambios en funcionalidad X e4f5g6 Corrección de bug Y h7i8j9 Implementación de nueva característica Z
Si el commit base es aquelarre en la que se corrige el bug Y será necesario anotar su has, en este caso e4f5g6
.
Paso 2: Crear una nueva rama en Git desde el punto base
Ahora, será necesario crear una nueva rama utilizando el hash del commit base identificado en el paso anterior:
git checkout -b nueva-rama e4f5g6
Este comando:
- Crea una nueva rama llamada
nueva-rama
. - Posiciona el HEAD en el commit base (
e4f5g6
en este caso).
Paso 3: Seleccionar y aplicar los cambios necesarios
Una vez creada la nueva rama, el siguiente paso será traer únicamente los cambios necesarios de otra rama. Dependiendo de cómo estén organizados los cambios, se puede usar uno de los siguientes métodos:
Método 1: Usar git cherry-pick
para aplicar commits específico
Si los cambios requeridos están en commits separados, la mejor opción es usar git cherry-pick
. Para eso se debe seguir los siguientes pasos:
- Cambiar a la nueva rama:
git checkout nueva-rama
- Aplica los commits seleccionados:
git cherry-pick <hash_commit_1> <hash_commit_2>
Por ejemplo:
git cherry-pick h7i8j9 a1b2c3d
- Verificar el historial:
git log
Método 2: Usar git checkout
para extraer archivos específicos
Por otro lado, si los cambios están distribuidos en archivos específicos, una opción sería utilizar el comando git checkout
. Esto podría indicar que los commits no son atómicos, es decir, no contienen un único cambio bien definido. En este caso, sería recomendable revisar la metodología utilizada para crear los commits en Git. No obstante, si esta situación es inevitable, se puede proceder siguiendo los pasos que se detallan a continuación:”
- Cambiar a tu nueva rama:
git checkout nueva-rama
- Traer los archivos necesarios:
git checkout <rama_original> -- ruta/del/archivo
Por ejemplo:
git checkout desarrollo -- src/app.js
- Hacer un commit para guardar los cambios:
git add ruta/del/archivo git commit -m "Traer cambios específicos desde desarrollo"
Método 3: Usar git diff
y git apply
para cambios personalizados
Finalmente, si lo que se necesita es incluir solo algunos cambios de un archivo el proceso es algo más complejo, pero también se puede hacer. Los pasos para seguir en este caso son:
- Generar un parche en la rama original:
git diff desarrollo -- ruta/del/archivo > cambios.patch
- Cambiar a la nueva rama:
git checkout nueva-rama
- Aplicar el parche:
git apply cambios.patch
- Realizar el commit:
git add ruta/del/archivo git commit -m "Aplicar cambios seleccionados desde parche"
Paso 4: Verificar los cambios en la nueva rama
Antes de subir la nueva rama, es necesario asegurarse de que todo es correcto. Para lo que se deben seguir los siguientes pasos:
- Verificar los archivos modificados:
git status
- Revisar el historial de commits:
git log
Paso 5: Subir la nueva rama a un repositorio remoto
Finalmente, para compartir la nueva rama con el resto del equipo, será necesario subirla al repositorio remoto:
git push origin nueva-rama
Conclusiones
Crear una nueva rama en Git con solo algunos cambios es una tarea común que se puede manejar fácilmente con herramientas como git cherry-pick
, git checkout
y git diff
. Este proceso permite entregar funcionalidades específicas, solucionar errores críticos o preparar versiones para pruebas sin afectar el resto del trabajo en desarrollo.
Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.
Deja una respuesta