Git Cherry Pick

git cherry-pick es un potente comando que permite recoger commits Git arbitrarios por referencia y añadirlos al HEAD de trabajo actual. Cherry picking es el acto de escoger un commit de una rama y aplicarlo a otra. git cherry-pick puede ser útil para deshacer cambios. Por ejemplo, digamos que una confirmación se hace accidentalmente a la rama equivocada. Usted puede cambiar a la rama correcta y cherry-pick la confirmación a donde debe pertenecer.

Cuando utilizar git cherry pick

git cherry-pick es una herramienta útil, pero no siempre una mejor práctica. El cherry picking puede causar commits duplicados y en muchos escenarios donde el cherry picking funcionaría, se prefieren las fusiones tradicionales en su lugar. Dicho esto git cherry-pick es una herramienta útil para algunos escenarios…

Colaboración en equipo.

A menudo un equipo encontrará miembros individuales trabajando en o alrededor del mismo código. Tal vez una nueva característica del producto tiene un componente de backend y frontend. Puede haber algún código compartido entre los dos sectores del producto. Tal vez el desarrollador del backend crea una estructura de datos que el frontend también necesitará utilizar. El desarrollador del frontend podría utilizar git cherry-pick para elegir el commit en el que se creó esta hipotética estructura de datos. Esta selección permitiría al desarrollador del frontend continuar el progreso en su lado del proyecto.

Corrección de errores

Cuando se descubre un error es importante entregar una solución a los usuarios finales tan pronto como sea posible. Para un escenario de ejemplo, digamos que un desarrollador ha comenzado a trabajar en una nueva característica. Durante el desarrollo de la nueva característica se identifica un error preexistente. El desarrollador crea un commit explícito para parchear este error. Este nuevo commit de parche puede ser llevado directamente a la rama master para arreglar el error antes de que afecte a más usuarios.

Deshacer los cambios y restaurar los commits perdidos

A veces una rama feature puede quedar obsoleta y no ser fusionada en master. A veces un pull request puede cerrarse sin fusionarse. Git nunca pierde esos commits y a través de comandos como git log y git reflog pueden ser encontrados y devueltos a la vida.

Cómo usar git cherry pick

Para demostrar cómo usar git cherry-pick supongamos que tenemos un repositorio con el siguiente estado de rama:

 a - b - c - d Master
\
e - f - g Feature

git cherry-pick el uso es sencillo y se puede ejecutar como:

git cherry-pick commitSha

En este ejemplo commitSha es una referencia de commit. Puedes encontrar una referencia de commit usando git log. En este ejemplo hemos construido digamos que queríamos usar el commit `f` en master. Primero nos aseguramos de que estamos trabajando en la rama master.

git checkout master

Después ejecutamos el cherry-pick con el siguiente comando:

git cherry-pick f

Una vez ejecutado nuestro historial Git tendrá el siguiente aspecto:

 a - b - c - d - f Master
\
e - f - g Feature

El commit f ha sido recogido con éxito en la rama master

Ejemplos de git cherry pick

git cherry picktambién se pueden pasar algunas opciones de ejecución.

-edit

Pasar la opción -edit hará que git pida un mensaje de commit antes de aplicar la operación de cherry-pick

--no-commit

La opción --no-commit ejecutará el cherry pick pero en lugar de hacer un nuevo commit moverá el contenido del commit objetivo 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 opciones útiles git cherry-pick también acepta una variedad de opciones de estrategia de fusión. Aprenda más sobre estas opciones en la documentación de estrategias de fusión de git.

Además, git cherry-pick también acepta la entrada de opciones para la resolución de conflictos de fusión, esto incluye las opciones: --abort --continue y --quitestas opciones se cubren más a fondo con respecto a git merge y git rebase.

Resumen

El cherry picking es un comando poderoso y conveniente que es increíblemente útil en algunos escenarios. Cherry picking no debe ser mal utilizado en lugar de git merge o git rebase. El comando git log es necesario para ayudar a encontrar commits para cherry picking.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.