Selección de commits específicos con git cherry-pick
Aprender git cherry-pick es una gran decisión si quieres tener un control más preciso sobre tu historial de commits

Aprender git cherry-pick es una gran decisión si quieres tener un control más preciso sobre tu historial de commits.
🍒 ¿Qué es git cherry-pick
?
git cherry-pick
toma uno (o varios) commits de una rama y los aplica en la rama actual, sin hacer un merge completo. Es ideal para aplicar cambios específicos sin traer todo el historial de otra rama.
🔹 No traés todos los cambios de otra rama, solo el commit que elegís.
🔹 Es como "elegir una cereza" de un pastel: tomás solo lo que querés.

🧠 ¿Para qué sirve?
- Traer un bug fix de otra rama sin traer todos los cambios.
- Copiar una mejora específica hecha en otra rama.
- Recuperar un commit perdido sin mover toda la historia.
🧪 Ejemplo práctico
Queremos aplicar el commit c5
que está en la rama feature-x
a la rama main
.
* c5 - Rama `feature-x` (commit que quieres copiar)
|
* c4
|
* c3 - Rama `main`
|
* c2
|
* c1
Paso 1: Crear un entorno de prueba
# Crear nuevo repositorio
mkdir cherry-pick-demo && cd cherry-pick-demo
git init
# Crear un archivo y hacer primer commit
echo "línea 1" > archivo.txt
git add archivo.txt
git commit -m "c1: primer commit"
# Segundo commit
echo "línea 2" >> archivo.txt
git commit -am "c2: segundo commit"
# Crear rama feature-x
git checkout -b feature-x
# Hacer un commit exclusivo en feature-x
echo "línea exclusiva de feature-x" >> archivo.txt
git commit -am "c5: cambio en feature-x"
# Ver historial
git log --oneline --graph --all
Paso 2: Volver a la rama main
git checkout main
Paso 3: Usar cherry-pick
git cherry-pick <HASH_DEL_COMMIT>
Reemplaza <HASH_DEL_COMMIT>
por el hash de c5
. Puedes obtenerlo con:
git log feature-x --oneline
Ejemplo:
git cherry-pick 3f9a8d2
Resultado
Ahora main
tiene el commit c5
aplicado, sin haber hecho un merge con feature-x
. El historial se verá así:
* c5' (copiado desde feature-x) ← ahora en main
* c2
* c1
🛠️ ¿Qué pasa si hay conflictos?
Si al aplicar el commit hay conflictos, Git te lo avisa:
error: could not apply 1a2b3c4 Fix en validación de formulario
Tendrías que:
- Resolver los conflictos manualmente.
- Después ejecutar:
git add . git cherry-pick --continue
Tambien se puede cancelar todo el cherry-pick:
git cherry-pick --abort
📚 Resumen de comandos útiles
Comando | Qué hace |
---|---|
git cherry-pick <commit> |
Aplica un commit específico en tu rama actual |
git cherry-pick --continue |
Continúa después de resolver conflictos |
git cherry-pick --abort |
Cancela el cherry-pick y vuelve al estado previo |
🚨 Atención
- No cherry-pick commits enormes o complicados si no entendés todo lo que traen.
- Cada cherry-pick crea un nuevo commit en tu rama (no cambia el commit original).
🔥 Resumiendo en una frase:
git cherry-pick
es la forma de copiar solo los cambios de un commit específico a tu rama, sin traer todo el historial.