FeaturedNOTICIAS

¿Qué hace Git Cherry Pick y cuándo debería usarlo? – CloudSavvy IT


Logotipo de Git

git cherry-pick es una herramienta simple pero poderosa que le permite transferir confirmaciones selectivas de una rama a otra. Puede usarlo cuando no desea fusionar una rama completa en el maestro, pero aún desea incluir cambios de una rama de función.

¿Qué es Git Cherry Pick y cómo funciona?

En Git, las confirmaciones son las unidades que rastrean los cambios a lo largo del tiempo. Cada confirmación podría representar una corrección de errores, una nueva característica o parte de una solución más grande. Puede pensar que las confirmaciones se almacenan como una lista enlazada que apunta hacia atrás en el tiempo; cada vez que cambia su rama HEAD, Git reconstruye los archivos en su directorio local teniendo en cuenta todas las confirmaciones desde el principio.

Obviamente, esto es una simplificación, y Git técnicamente no almacena confirmaciones como simples listas de cambios, usa blobs basados ​​en archivos, pero el principio es el mismo.

Las cosas se complican cuando se trata de sucursales. A menudo, el trabajo en una función lleva varios días o semanas. En lugar de abarrotar el repositorio principal, pasa a una rama de funciones separada, y luego el código se revisa y se fusiona nuevamente. La fusión es básicamente ramificar este historial de confirmaciones para que toda la rama de funcionalidad se incluya cuando Git hace su trabajo.

Sin embargo, ¿qué sucede si desea fusionar algunas cosas, pero no desea que se incluya toda la rama todavía? no puedes hacer git merge en ese caso.

Aquí es donde git cherry-pick se vuelve útil. Hace lo que sugiere el nombre: toma una única confirmación de la rama de características, la selecciona individualmente y la aplica a la rama principal o viceversa. Esto copia la confirmación, por lo que hay una nueva confirmación en la rama de destino.

Tenga en cuenta que no hay una «línea» real que conecte la nueva confirmación en la rama maestra con la confirmación anterior. La nueva confirmación seleccionada creada en el maestro no se refiere en absoluto a la confirmación original, la confirmación simplemente se copia. Git se encargará de eso cuando vuelva a fusionar las ramas, porque las confirmaciones se ven como copias entre sí.

En efecto, la confirmación se «envía» a la nueva rama, aunque tendrá que tener en cuenta que la confirmación anterior todavía se aplica a la rama de características. Sin embargo, no querrá volver a la confirmación original, ya que esto causará problemas para fusionar más adelante.

¿Por qué Cherry Pick?

Hay algunos casos de uso para esto. Quizás está trabajando en una función y no está lista para su lanzamiento, pero ha corregido un error en la rama de funciones que le gustaría incluir en su versión de lanzamiento semanal. Puede utilizar la selección selectiva para copiar la corrección de errores en Master para su distribución anticipada.

O tal vez tenga varias ramas para la producción y el desarrollo y le gustaría copiar una corrección de error urgente de la producción al desarrollo. Elegir cereza también puede hacer eso.

O puede que se haya comprometido accidentalmente con la rama incorrecta. puedes usar git cherry-pick para copiarlo a la derecha, y luego git reset para deshacer esa confirmación (siempre que esté en la CABEZA de la rama).

Usando Git Cherry Pick

Una vez que entienda lo que está haciendo, git cherry-pick es bastante sencillo de utilizar.

La forma más fácil de ver el historial de confirmaciones de Git en la línea de comandos es con el siguiente comando, que muestra todas las confirmaciones pero con un historial de bifurcaciones y fusiones, que es crucial para usar cherry-pick:

git log --pretty=format:"%h %s" --graph

Luego, puede simplemente copiar el hash SHA1 de confirmación y la selección de cereza:

git cherry-pick 1da76d3

Tenga en cuenta que también puede elegir varias confirmaciones a la vez, simplemente pase varios hashes.

git cherry-pick tiene algunas opciones útiles:

  • --no-commit aplique solo los cambios a su directorio. Necesitará preparar y confirmar manualmente.
  • --edit le permitirá cambiar el mensaje de confirmación.
  • -x agregará un mensaje que diga «selección de la cereza de la confirmación: …»

Por supuesto, si está utilizando un cliente de Git basado en GUI como Fork o GitKraken, que recomendamos encarecidamente, puede hacer clic con el botón derecho en el compromiso y elegir seleccionarlo:

TE INTERESA>>  Actualizaciones de la temporada 4 de Titans: todo lo que sabemos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba