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 |
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.¿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.