Git Cherry-pick
Última actualización
git cherry-pick copia los cambios de uno o varios commits concretos y los aplica sobre tu rama actual como commits nuevos. Es la forma de tomar una sola corrección de otra rama sin fusionar toda esa rama: útil para retroportar un hotfix o sacar un commit de una rama de funcionalidad.
Prueba estos comandos en el terminal playground: un shell real en tu navegador, sin nada que instalar.
Sintaxis
| Command | What it does |
|---|---|
git cherry-pick <hash> | Aplica un commit sobre la rama actual |
git cherry-pick <a> <b> | Aplica varios commits en orden |
git cherry-pick <a>..<b> | Aplica un rango de commits (excluyendo a) |
git cherry-pick -n <hash> | Aplica los cambios pero aún no confirma |
git cherry-pick -x <hash> | Anota el commit original en el mensaje |
Durante un cherry-pick
Si un cherry-pick provoca un conflicto, resuélvelo y continúa.
| Command | What it does |
|---|---|
git cherry-pick --continue | Reanuda tras resolver los conflictos |
git cherry-pick --abort | Cancela y restaura la rama |
git cherry-pick --skip | Omite el commit actual |
Ejemplo práctico
| Paso | Comando | Resultado |
|---|---|---|
| 1 | git log --oneline hotfix | Busca el hash de la corrección, por ejemplo a1b2c3d |
| 2 | git switch main | Cambia a la rama que debe recibir la corrección |
| 3 | git cherry-pick a1b2c3d | Aplica la corrección en main como un commit nuevo con un hash nuevo |
Preguntas frecuentes sobre git cherry-pick
¿Qué hace git cherry-pick?
Toma los cambios introducidos por un commit concreto y los aplica sobre tu rama actual como un commit totalmente nuevo (con un nuevo hash). A diferencia de merge o rebase, no trae toda una rama: solo el commit o los commits que indiques.
¿Cuándo debería usar cherry-pick?
Úsalo cuando necesites un commit concreto en otro lugar; por ejemplo, para retroportar una corrección de errores de
main a una rama de release, o para extraer un único commit útil de una rama de funcionalidad sin fusionarlo todo. Si quieres la rama entera, usa merge o rebase.¿Cómo aplico varios commits con cherry-pick?
Enuméralos:
git cherry-pick <a> <b> <c> aplica cada uno en orden. Para un rango contiguo usa git cherry-pick <start>..<end>, que aplica todos los commits posteriores a start hasta end inclusive. Añade <start>^..<end> si quieres incluir también start.¿Qué pasa si un cherry-pick provoca un conflicto?
Git se detiene y marca los archivos en conflicto. Resuélvelos, haz
git add de los resultados y luego ejecuta git cherry-pick --continue. Para deshacerlo por completo, usa git cherry-pick --abort, que restaura tu rama al estado anterior al inicio del cherry-pick.¿Cómo hago cherry-pick de un commit de otra rama?
Busca el hash del commit con
git log --oneline <other-branch>, cambia a la rama que debe recibirlo y ejecuta git cherry-pick <hash>. También puedes pasar un nombre de rama, como en git cherry-pick feature, que toma el commit de la punta de esa rama.¿Cuál es la diferencia entre cherry-pick y merge?
git merge trae todos los commits de una rama y registra dónde se unieron los historiales. Cherry-pick copia solo los commits que indicas, como commits nuevos, sin ningún vínculo con los originales. Haz merge de la rama cuando la quieras entera; usa cherry-pick cuando solo quieras uno o dos commits.
¿Puedo practicar esto en línea?
Sí. Abre el terminal playground para ejecutar
git cherry-pick en un shell real en tu navegador, sin nada que instalar. El curso interactivo y gratuito de Git de Coddy también cubre cómo mover commits entre ramas paso a paso.