Índice
- ¿Qué es cherry pick?
- Casos de uso
- Sintaxis
- Tu primer cherry pick: Pasos para hacer un cherry pick exitoso
- ¿Qué hacer en caso de conflictos?
- Referencias
- Conclusiones
1. ¿Qué es cherry pick?
Cherry pick es un comando que nos proporciona git que sirve para poder realizar copias de uno o varios commits individuales de una rama a otra.
¿Para qué nos puede ser útil esto?
La verdad es que hay casos muy concretos en los que esto puede ser útil por lo que cherry pick no es de los comandos más usados en git pero es interesante saber que se cuenta con un comando que nos puede ser útil en casos concretos de un proyecto.
Si bien git merge
y git rebase
nos sirve para poder fusionar ramas enteras, que sucede cuando necesito tomar un commit específico y "fusionarlo" con una rama en concreto. Aquí es donde podemos usar cherry pick.
El commit copiado cambió de HASH siempre, por ello siempre se recomienda usar cherry pick en entornos locales.
2. Casos de uso
Cherry pick es útil cuando por error hicimos un commit en una rama que no debía hacerse dicho commit, entonces cherry pick nos permite arreglar esto copiando el commit a la rama que le corresponde.
Podemos solucionar bugs con cherry pick y en lugar manipular la rama entera donde se encuentra el bug, mejor solo manipulamos el commit en concreto que está causando el problema.
3. Sintaxis
La sintaxis es muy sencilla:
git cherry-pick <HASH>
Donde HASH
es el identificador único del commit que queremos copiar.
4. Tu primer cherry pick: Pasos para hacer un cherry pick exitoso
Para ejemplificar todo lo ya dicho vamos a usar un repositorio que aún sigo escribiendo que se llama cris-python
. Este repositorio contiene conceptos teóricos y prácticos para aprender Python.
Puedes ver el estado del repositorio:
crisdux / cris-python
Repo dedicado para aprender y practicar Python de 0 a 100
Aprende Python
Repositorio orientado al aprendisaje de python con teoria y ejercicios practicos. Get started by customizing your environment (defined in the .idx/dev.nix file) with the tools and IDE extensions you'll need for your project!
Learn more at https://developers.google.com/idx/guides/customize-idx-env
En este proyecto aprenderas:
- Básicos de Python
- Cadenas
- Números
- Condicionales, etc...
El repositorio tiene dos carpetas principales: fundamentos/
(donde estas todos los conceptos teóricos) y ejercicios/
(con todos los ejemplos prácticos)
Para cada nuevo tema a aprender sobre python creó una nueva carpeta y una nueva rama para ordenar todo el contenido, por ejemplo, para aprender listas, tenemos una sub carpeta listas tanto en fundamentos como en ejercicios.
En algunas ocasiones cometía un error haciendo un commit directo a la rama main
en lugar de hacerlo a la rama pertinente, por ejemplo, a la rama-listas
.
Acá es donde puede entrar a salvarnos cherry pick! 🍒
Primero identificamos el commit que queremos copiar, en este caso será un commit de nuestra rama
main
que queremos copiar en nuestrarama-funciones
.Luego nos movemos a la rama de destino, en este caso la
rama-funciones
.Luego ejecutamos:
git cherry-pick <HASH>
, quedaría así:
Verificamos el resultado final y listo.
5. ¿Qué hacer en caso de conflictos?
En caso de conflictos tenemos tenemos 2 opciones:
- Podemos abortar el comando haciendo
git cherry-pick --abort
lo que terminará el proceso. - Podemos resolver el conflicto y luego hacer
git cherry-pick --continue
para poder seguir el proceso.
6. Referencias
- https://luisburgosv.medium.com/c%C3%B3mo-usar-git-cherry-pick-sin-morir-en-el-intento-fab92ba1ee7b
- https://www.atlassian.com/git/tutorials/cherry-pick
- https://blog.codmind.com/que-es-un-cherry-pick-en-git/
7. Conclusiones
- Cherry pick es una manera sencilla de copiar commits entre ramas en un repositorio.
- Es útil para casos de uso muy concretos pero que es muy importante conocer.
- El HASH del commit copiado siempre cambiará, por lo que se recomienda usarlo en entornos locales.
Otros post de mi autoría que te pueden interesar:
Top comments (0)