Git Cherry Pick
git cherry-pick
es un potente comando que permite que las confirmaciones arbitrarias de Git se elijan por referencia y se añadan al actual HEAD de trabajo. La ejecución de cherry-pick es el acto de elegir una confirmación de una rama y aplicarla a otra. git cherry-pick
puede ser útil para deshacer cambios. Por ejemplo, supongamos que una confirmación se aplica accidentalmente en la rama equivocada. Puedes cambiar a la rama correcta y ejecutar cherry-pick en la confirmación para aplicarla a donde debería estar.
Cuándo utilizar git cherry pick
git cherry-pick
es una herramienta útil, pero no siempre es una práctica recomendada. Ejecutar cherry-pick puede generar confirmaciones duplicadas y, en muchos casos en los que su ejecución sí funcionaría, son preferibles las fusiones tradicionales. Por lo tanto, git cherry-pick
es una herramienta útil solo en algunos casos...
Colaboración de Equipos
A menudo, un equipo puede encontrar a miembros trabajando en el mismo código o en torno a él. Es posible que una nueva función de un producto tenga un componente de backend y otro de frontend y que haya algún código compartido entre ambos sectores de un producto. Puede que el desarrollador del backend cree una estructura de datos que el frontend también deba utilizar. El desarrollador del frontend podría usar git cherry-pick
para elegir la confirmación en la que se creó esta hipotética estructura de datos. Esta elección permitiría al desarrollador del frontend seguir avanzando con su parte del proyecto.
Material relacionado
Cómo mover un repositorio de Git completo
VER LA SOLUCIÓN
Aprende a usar Git con Bitbucket Cloud
Correcciones de errores
Cuando se detecta un error, es importante ofrecer una solución a los usuarios finales cuanto antes. Por ejemplo, supongamos que un desarrollador ha comenzado a trabajar en una nueva función. Durante su desarrollo, identifica un error preexistente. Entonces, el desarrollador crea una confirmación explícita para aplicar una solución al error. Esta nueva confirmación de aplicación de solución se puede elegir mediante cherry-pick directamente en la rama principal
para corregir el error antes de que afecte a más usuarios.
Cómo deshacer cambios y restaurar las confirmaciones perdidas
A veces, una rama feature
puede quedar anticuada y no fusionarse con la rama main
. En algunos casos, una solicitud de incorporación de cambios puede cerrarse sin llegar a fusionarse. Git nunca pierde esas confirmaciones y, a través de comandos como git log y git reflog, se pueden detectar y devolver a la vida ejecutando cherry-pick.
Cómo utilizar git cherry-pick
Para demostrar cómo utilizar git cherry-pick
, supongamos que tenemos un repositorio con el siguiente estado de rama:
a - b - c - d Main
\
e - f - g Feature
Usar git cherry-pick
es sencillo y se puede ejecutar de la siguiente manera:
git cherry-pick commitSha
En este ejemplo, commit
Sha es una referencia de confirmación. Puedes encontrar una referencia de confirmación con el comando git log
. En este caso, imaginemos que queremos aplicar la confirmación f a la rama principal
. Para ello, primero debemos asegurarnos de que estamos trabajando con la rama principal
.
git checkout main
A continuación, ejecutamos cherry-pick con el siguiente comando:
git cherry-pick f
Una vez ejecutado, el historial de Git se verá así:
a - b - c - d - f Main
\
e - f - g Feature
La confirmación f se ha introducido correctamente en la rama principal
Ejemplos de git cherry pick
git cherry pick
también se puede combinar con algunas opciones de ejecución.
-edit
Al combinar la opción -edit
, Git solicitará un mensaje de confirmación antes de aplicar la operación cherry-pick.
--no-commit
La opción --no-commit
ejecutará el comando cherry-pick, pero en lugar de hacer una nueva confirmación, moverá el contenido de la confirmación de destino al directorio de trabajo de la rama actual.
--signoff
La opción --signoff
añadirá una línea de firma 'signoff' al final del mensaje de confirmación de cherry-pick.
Además de estas útiles opciones, git cherry-pick
también admite una variedad de opciones de estrategia de fusión. Infórmate sobre estas opciones en la documentación sobre estrategias de fusión de Git.
Además, git cherry-pick admite la introducción de opciones para la resolución de conflictos de fusión, incluidas las siguientes: --abort, --continue
y --quit
. Estas opciones se tratan con mayor detalle con respecto a git merge y git rebase.
Resumen
La ejecución del comando cherry-pick es potente y cómoda, y resulta increíblemente útil en algunos casos. La ejecución de cherry-pick no debería aplicarse equivocadamente en lugar de git merge o git rebase. Para ayudar a encontrar confirmaciones en las que ejecutar cherry-pick, hace falta el comando git log.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.