La .NET CONF 2024 acaba de terminar. Descubre las NOVEDADES de .NET 9 junto a los CAMBIOS que trae C# 13.
Puedes ver el contenido de este vídeo junto con su curso en el modo vídeo (similar a Udemy) si pulsas aquí.

Cherry pick en git | Implementa los hotfixes

23 Jun 2021 8 min (0) Comentarios

 

1 - Qué es cherry pick en git?

Cherry pick es una funcionalidad de Git que nos permite coger un commit de un branch y aplicarlo en otro branch.

Cuando hacemos cherry pick lo hacemos sobre un único commit, mientras que si hacemos merge o rebase ejecutaremos la acción sobre varios commits.

Qué es git cherry pick

 

2 - Cuando utilizar cherry pick en git?

Antes de continuar debemos tener claro que la funcionalidad de cherry pick es muy útil en ciertos escenarios, pero en otros puede ser muy liosa, ya que puede generar commits duplicados lo que causará unos conflictos brutales. 

 

2.1 - Hotfixes para arreglar bugs

El uso principal es cuando tenemos hotfixes, un hotfix no es ni más ni menos que un cambio el cual tenemos que poner en producción si o si, ya que ese cambio va a arreglar un bug.

 

Este tipo de acciones es muy común cuando tenemos release branch, supongamos que descubrimos un bug crítico, lo arreglamos y hacemos el merge a master, a su vez, debemos aplicarlo en el branch que está en producción ahora mismo.

hotfix

Un caso común también suele ser que el developer se encuentra el bug mientras hace otra funcionalidad. lo que hace es un comit único para arreglar el bug y a su vez un cherry pick de este en el branch que está en producción.

cherry pick to release branch

 

2.2 - Aplicar commits no mergeados

Desgraciadamente no todo lo que programamos acaba en producción, muchas veces a mitad de una funcionalidad nos damos cuenta que no es necesaria o que es mejor hacerla de otra forma. Por lo que solemos borrar el branch. 

 

Pero qué pasa, si en uno de los commits hemos arreglado un bug? 

Pues no pasa nada, ya que git siempre guarda todos los commits, y aún borrando el branch tendremos acceso al commit si utilizamos su hash. 

 

 

2.3 - Extra

Adicionalmente podemos especificar un rango para los cherry pick, pero como he indicado anteriormente es muy probable que tengamos problemas con los conflictos. Aún así su sintaxis es la siguiente:

git cherry-pick <gitHash>..<gitHash>

El comando hará cherry pick de todos los commits entre el primer y el segundo hash.

 

 

3 - Ejecutar cherry pick en línea de comandos

Para ejecutar un cherry pick debemos de saber el hash del commit que queremos aplicar, en github lo podemos encontrar si vamos al historial, en la parte derecha. 

github

Nota: también podemos ver el hash utilizando git log en la línea de comandos.

 

Nos sirve con el código “pequeño” de la derecha pero si pulsamos en copiar, veremos que se nos copia un código más grande, ese también nos sirve. 

Nuestro objetivo es mover el segundo commit del branch (hotfix) a nuestro branch release como podemos ver en la imagen:

cherry pick linea de comandos

Para ello nos debemos posicionar en el branch release

git checkout release1

Y ahora introducir el comando del cherry pick, recuerda tener el hash a mano

git cherry-pick <hash>

cherrypick command line

Finalmente debemos hacer git push para enviar los cambios al servidor.

 

3.1 - Ejecutar cherry pick en GitHub Desktop

Desde hace un tiempo utilizo la aplicación de GitHub para tener una visual de git, hay otras opciones como Gitkraken o extensiones de visual studio, pero a mi, con la de github me sobra. 

 

Para realizar un cherry pick en Github Desktop debemos ubicarnos sobre el branch dónde está el commit, y ahí en el historial.

github ui

Y de ahí debemos arrastrarlo con el botón izquierdo del ratón encima del branch que queremos aplicarlo

Automáticamente la interfaz nos cambiará al branch donde hemos aplicado el cherry pick y nos saldrá el botón para hacer push. 

 

 

Conclusión

Cherry pick es un comando que es muy poderoso en ciertas situaciones, pero no debemos utilizarlo en reemplazo de merge o rebase.

Personalmente lo considero un comando de git avanzado, ya que requiere conocimiento de los comandos más en profundidad.

En este post hemos visto:

  • Qué es cherry pick en git.
  • Cuándo utilizar chery pick en git.
  • Cómo ejecutar cherry pick desde la línea de comandos y desde la interfaz de github desktop 

 


Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café