Luciano Joan Vergara Avatar

Luciano Joan Vergara

CTO & CO Founder de Diblet.com

GIT: Cómo hacer merge de un commit específico

Si en nuestro proceso de desarrollo usamos Git puede que en algún momento necesitemos mover un solo commit de un branch a otro y no podamos hacer un merge porque no queremos mover todos los cambios del branch en el proceso. ¡Eso puede ser un gran problema!

¡Pero Tranquilo! hay una solución interesante para estos casos. Hablamos del comando Git cherry-pick.

git cherry-pick hash

Con este comando será posible hacer merge de un commit ubicado en un branch cualquiera en otro branch diferente. Supongamos que en tu repositorio Git tienes tres branches:

  1. dev
  2. demo
  3. produccion

Para este ejemplo digamos que hace varios días vienes realizando múltiples mejoras en el software que estas desarrollando, a cada mejora la estas subiendo en un commit a tu branch dev, una vez completadas las mejoras decides hacer merge de tu branch dev en demo para poder visualizar, testear, presentar los cambios antes de pasar tus mejoras a produccion para ponerlas en línea.

Ejemplo git cherry-pick hash

Luego de realizar las pruebas te percatas de que deberás retocar algunos de tus cambios antes de subirlos al ambiente productivo. Pero hay uno de los cambios en específico que funciona correctamente y es bastante urgente mandarlo a producción. Normalmente, si no existieran correcciones que hacer, podrías hacer un merge de tu branch dev en produccion.

Pero esta no es una opción posible ya que solo deseas subir el commit «Múltiples avances y mejoras» de hash e8e093c de tu lista de commits y no los commits anteriores, ni los commits posteriores.

Para este caso lo ideal es utilizar Git cherry-pick y hacer merge del único commit que deseas en tu branch de produccion. Primero deberás hacer checkout en el branch destino de este merge (para este ejemplo haríamos checkout ejecutando git checkout produccion) y la sintaxis de cherry-pick sería la siguiente:

git cherry-pick e8e093c

Puedes ver mas usos de este comando de Git en la documentación oficial.

Imagen del post tomada de Pexels.

COMENTARIOS