Git cherry pick illo

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

Cuándo utilizar git cherry pick

git cherry-pick es una herramienta útil, pero no siempre es una práctica recomendada. La ejecución de cherry-pick puede generar duplicaciones de confirmaciones y, en muchos casos en los que su ejecución sí funcionaría, se prefieren las fusiones tradicionales. Por lo tanto, git cherry-pick es una herramienta útil solo en algunos casos...

Colaboración en equipo

A menudo, un equipo puede encontrar a miembros trabajando en el mismo código o en torno a él. Es posible que una nueva funcionalidad de un producto tenga un componente de backend y otro de frontend y que haya algún código compartido entre dos 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.

Correcciones de errores

Cuando se detecta un error, es importante ofrecer una solución a los usuarios finales lo más rápido posible. Por ejemplo, supongamos que un desarrollador ha comenzado a trabajar en una nueva funcionalidad. 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 directamente en la rama master 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 master. 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, es posible volver a encontrarlas y a ejecutar 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   Master
         \
           e - f - g Feature
El uso de

git cherry-pick es sencillo y se puede ejecutar de la siguiente manera:

git cherry-pick commitSha

En este ejemplo, commitSha es una referencia de confirmación. Puedes encontrar una referencia de confirmación utilizando el comando git log. En este caso, imaginemos que queremos utilizar la confirmación 'f' en la rama master. Para ello, primero debemos asegurarnos de que estamos trabajando con esa rama master.

git checkout master

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   Master
         \
           e - f - g Feature

La confirmación f se ha sido introducido con éxito en la rama de funcionalidad

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. Obtén más información 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 en relación con 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, es necesario el comando git log.