sábado, 3 de julio de 2021

Git Cherry Pick / git-cherry-pick

 Saludos Estimados !!

Hace mucho tiempo que no escribo aquí, y hoy me tope con algo que ya había realizado muchas veces en el pasado pero me enrede y ya no me salía, por lo que les compartó y/o me autocomparto por si lo vuelvo a necesitar el buen git-cherry-pick.

No es muy recomendable ya que un abuso de este comando puede dejarte una buena enredadera que después es difícil encontrarle forma, pero si que es útil como en el siguiente caso.

Necesitamos pasar un commit de un branch a otro, esto por que el branch original quedo muy desactualizado y por error se utilizó, es verdad que el rebase es una opción pero será un largo camino que recorrer además de que puede prestarse a errores de dedo en el camino, so el cherry pick en este caso nos resulta más económico además que no son muchos cambios que pueden revisarse fácilmente aquí los pasos:


1. Nos movemos a la branch donde tenemos nuestro commit: 

    git checkout MiBranchConCommit

2. Ahora vamos a revisar cuál es el hash de nuestro commit:

    git log --one line

    La salida de este comando será algo como:

    86f82f9 (HEAD -> SSCI-101-cherry-pick, origin/SSCI-101-cherry-pick) BRANCH-01test 1

    90805b1 (origin/master, origin/SSCI-85, origin/HEAD, master) BRANCH-02 test 2

    c3451b8 BRANCH test 3

    Vamos a tomar el último de este commit por lo que el número será: 86f82f9

3. Ahora vamos al branch de destino:

    git checkout BranchDestino

4. Una vez que nos encontremos ahí entonces aplicaremos el siguiente comando:

    git cherry-pick 86f82f9


Con este último comando se aplicará el mismo commit a este branch. Una opción interesante (que usualmente utilizo) solo en caso de que tuviéramos la misma base (o HEAD) en las ramas seria utilizar:

    git cherry-pick 86f82f9 --ff

Esta opción --ff hace referencia a fast forward existen más opciones por acá https://git-scm.com/docs/git-cherry-pick sin embargo este nos colocará el commit hacia adelante o por arriba de todos los previous commits.

¿Cómo ves?, si consideras que puede haber otros caminos, te agradezco me los compartas en los comentarios.


Espero te sea de utilidad !


Referencias:

https://git-scm.com/docs/git-cherry-pick


No hay comentarios:

Publicar un comentario