Git cherry-pick: traer commits antiguos al head del branch
Clase 38 de 43 • Curso Profesional de Git y GitHub
Resumen
Git cherry-pick
es un comando en Git que selecciona y aplica commits específicos de una rama o branch a otra. Todo, sin tener que hacer un merge completo. Así, podemos copiar un commit específico y aplicarlo de forma aislada en la rama de destino, conservando su historial.


Escenarios de uso de Git Cherry Pick
Este comando facilita la incorporación precisa de cambios, optimizando la colaboración y el mantenimiento en proyectos de desarrollo de software. Veamos sus casos de uso.
1. Colaboración en equipo
Antes que nada, puede ser útil implementarlo cuando diferentes miembros del equipo trabajan en áreas similares del código, pues permite seleccionar y aplicar commits específicos a cada rama, facilitando el progreso individual.
2. Solución de bugs o errores
Cuando encuentras un error o bug, es importante solucionarlo y entregar la corrección a los usuarios lo más rápido posible. Con Git Cherry Pick, puedes aplicar rápidamente un commit de verificación en la rama principal, evitando que afecte a más usuarios.
3. Deshacer cambios y recuperar commits perdidos
A veces, una rama de funcionalidad puede ser obstoleta y no ser fusionada con la rama principal. O puede suceder que una solicitud de extracción (pull request) sea cerrada sin ser fusionada.
Git nunca pierde esos commits y, a través de comandos como git log
y git reflog
, puedes encontrar y aplicar los commits utilizando Git Cherry Pick.
¿Cómo funciona Git Cherry Pick? Ejemplos
Imaginemos que tienes un repositorio con el siguiente estado de las ramas:
a - b - c - d Rama Principal
\\
e - f - g Rama de Características
El uso de Git Cherry Pick es bastante sencillo y se ejecuta de la siguiente manera:
- Primero, asegúrate de estar en la rama principal empleando el comando
git checkout rama-principal
. - Luego, ejecuta el siguiente comando:
git cherry-pick commitSha
Aquí, commitSha
es una referencia al commit que deseas aplicar. Puedes encontrar la referencia del commit utilizando el comando git log
. Supongamos que deseas usar el commit ‘f’ en la rama principal.
Una vez ejecutado el comando, el historial de Git se verá así:
a - b - c - d - f Rama Principal
\\
e - f - g Rama de Características
De esta forma, el commit ‘f’ se ha incorporado correctamente a la rama principal.
El uso de Git Cherry Pick debería aplicarse con sabiduría, ya que puede generar duplicación de commits y complicaciones en el historial de cambios. Sin embargo, si sabes lo que estás haciendo, ¡adelante! Solo asegúrate de evitar su utilización si no estás seguro.
¿Cómo deshacer este comando en caso de conflicto?
Supongamos que estás usando GitHub para colaborar con un equipo en un proyecto y has realizado un cherry-pick de un commit de otra rama en tu rama local, pero ocurren conflictos durante este proceso y deseas detenerlo y volver al estado anterior.
Por suerte, en ese caso, puedes emplear el siguiente comando.
git cherry-pick --abort
Esto significa que puedes hacer las correcciones necesarias en tu rama local y volver a intentar el cherry-pick si así lo deseas.
Pon en práctica lo aprendido
Git Cherry Pick es un comando poderoso y conveniente que resulta especialmente útil en ciertas situaciones. Sin embargo, si abusas de él, podría considerarse una mala práctica en Github. Recuerda utilizarlo correctamente y comprender sus implicaciones en el historial de cambios.
Si necesitas aplicar commits específicos, no te preocupes. Siempre puedes usar el comando git log
y Git Cherry Pick.