GitHub
]
Es algo poco deseable, pero en ocasiones pasa…verdad? :) De repente estás desarrollando en una rama, aplicas un FIX crítico que debes llevarte de inmediato a otra rama en la que algun compañero está trabajando, o viceversa. Cuando hablamos de 1 o 2 cambios, algo tonto, pues a veces acabamos antes directamente aplicando nosotros el fix, pero cuando la cosa se complica porque son decenas de pequeños cambios, nuevos assets,… y no tienes el control real de lo que hablas, te interesa saber cómo hacerlo.
git cherry-pick
Nuestro amigo en este caso se llama git cherry-pick.
El comando require el hash del commit que quieras llevarte. Yo soy bastante comodón y suelo usar el plugin de vscode llamado mhutchie.git-graph.
En este caso, hago checkout en la rama que tiene el commit que busco y me anoto el commit hash:
git checkout RamaConTuCommit
Ahora busco a ver el commit hash que quiero llevarme a otro lado:
Una vez lo tengo claro, lanzo el comando cherry-pick sobre la rama A LA QUE QUIERO TRAERMELO
git checkout RamaDondeQuieroTraerElCommit
git pull
# git cherry-pick COMMIT-HASH
git cherry-pick a4045a23e15dff7d6daf4e0c5a77d6d7954c89d0
Una vez lanzado, tendrás que reparar todos los conflictos que tengas.
En mi caso tengo varios conflictos como puedes ver. la mayoria de ellos son prácticamente porque se trata de ficheros nuevos, que por defecto entiende que debe eliminar.
Pero yo no quiero eliminar, sino añadir, por lo que toca hacer un
git add . # básicamente sobre la carpeta que tiene todo lo nuevo en mi caso
Y finalmente hacer un commit de todo y su correspondiente push, con lo que las 2 ramas quedan con los cambios aplicados y obviamente cada una todavia sigue su propio camino.