Antes de empezar a leer este artículo doy por hecho que tú ya tienes conocimientos sobre git y sabes al menos lo básico acerca de este sistema de control de versiones.

¿No sabes que es git?, no te preocupes, puedes tomar el curso de git que hice con la colaboración de Código facilito.

Copiando un commit a otra rama con cherry-pick

Estoy seguro de que en algún punto de tu vida al trabajar con git te has encontrado con la situación de querer pasar un commit a otra rama, ya sea porque hayas cometido un error o simplemente necesitas hacerlo. Un merge no sería opción, pues ya estarías pasando más de un commit a tu rama.

Para ello tenemos cherry-pick como solución.

Supongamos que tenemos dos ramas, cada una con tres commits:

  • Rama 1: Master
  • Rama 2: Desarrollo

Ramas git

Y queremos pasar el commit número 3 de la rama Desarrollo a la rama master

Cherry-pick git

Para ello vamos a realizar lo siguiente:

1. Nos movemos a la rama desarrollo:

git checkout desarrollo  

2. Copiamos el código SHA

git log  

Con git log obtenemos es una lista de nuestros commits, con sus respectivos códigos SHA. Obviamente vamos a copiar el código SHA del commit que queremos mover a nuestra rama.

Código SHA - Terminal git

3. Regresamos a la rama master

git checkout master  

4. Usamos cherry-pick

git cherry-pick c8dc73f56eb5e548a0f9df2989d8346580ada1b7  

Lo que sigue después de cherry-pick es el código SHA.

Ahora master debería tener el commit de desarrollo:

Branch master git

De manera opcional puedes eliminar el commit que hay en desarrollo (en caso de que no lo necesites).

git reset --hard fc822f1991a1c72b71062d98298b6d5f4eb41c97  

Después de git reset --hard también usamos un código SHA, en este caso sería el commit anterior al que le aplicamos cherry-pick. Para entender mejor git reset te recomiendo ver el curso que mencione anteriormente.

Si llegas a tener conflictos al usar cherry-pick, debes hacer lo mismo que cuando tienes conflictos con un merge y cambiar los archivos con los que tengas problemas (posiblemente por haber editado el mismo archivo).

Una vez que hayas solucionado el problema con tus archivos, hay que agregar los cambios:

git add -A  

Y continuar con cherry-pick

git cherry-pick --continue  

Como puedes ver, cherry-pick es muy útil para situaciones en las que se necesite copiar o mover un commit a otra rama por alguna razón, sin tener que pasar todos los commits, como pasaría con un merge.

Incluso podríamos mover commits anteriores al último:

Cherry-pick git

Solo que en este caso hay que tener cuidado si queremos aplicar git reset.