Diferencia entre revisiones de «Cherry-picking»
(Página creada con «Cuando estamos implementando en nuestra rama puede ser necesario o recomendable traernos a la rama principal solo alguno de los commits que hicimos en la rama donde hemos d...») |
m |
||
| (No se muestran 5 ediciones intermedias de otro usuario) | |||
| Línea 1: | Línea 1: | ||
| − | Cuando estamos implementando en nuestra rama puede ser necesario o recomendable traernos a la rama principal solo alguno de los commits que hicimos en la rama donde hemos desarrollado nuestra nueva funcionalidad. Es | + | Cuando estamos implementando en nuestra rama puede ser necesario o recomendable traernos a la rama principal solo alguno de los commits que hicimos en la rama donde hemos desarrollado nuestra nueva funcionalidad. Es en este escenario donde podemos utilizar cherrypicking. |
1) Nos movemos a la rama donde estemos implementando la nueva funcionalidad: | 1) Nos movemos a la rama donde estemos implementando la nueva funcionalidad: | ||
| − | + | <source> | |
git checkout new-feature | git checkout new-feature | ||
| + | </source> | ||
| + | 2) Tras movernos, realizaremos los cambios que necesitemos. Supongamos que obtenemos una salida parecida a la siguiente | ||
| − | + | <source> | |
| − | |||
git log --oneline | git log --oneline | ||
| + | </source> | ||
| + | [[Archivo:log_git_example.png|400px]] | ||
| − | + | 3) Bien, pues ¿qué necesitamos hacer para traernos a la rama master los commits d05aa97 4394783? | |
| − | + | <source> | |
| − | |||
| − | 3) Bien, pues | ||
| − | |||
git checkout master | git checkout master | ||
| − | git cherry-pick | + | git cherry-pick d05aa97 4394783 |
| − | + | </source> | |
4) En este momento, | 4) En este momento, | ||
4a) Si nos aparecen conflictos tendremos que resolverlos y posteriormente | 4a) Si nos aparecen conflictos tendremos que resolverlos y posteriormente | ||
| − | + | <source> | |
git cherry-pick --continue | git cherry-pick --continue | ||
| − | + | </source> | |
4b) Si por el contrario queremos abortar el cherrypick | 4b) Si por el contrario queremos abortar el cherrypick | ||
| − | + | <source> | |
git cherry-pick --abort | git cherry-pick --abort | ||
| − | + | </source> | |
¡OJO!! | ¡OJO!! | ||
| − | El cherry-picking | + | El cherry-picking está desaconsejado normalmente por los desarrolladores. La razón principal es porque crean dos commits duplicados con los mismos cambios y se pierde la capacidad de rastrear el historial de la confirmación original. Es decir, en casos donde es posible hacer un merge completo. Mejor optar por el. |
Revisión actual del 19:47 10 nov 2019
Cuando estamos implementando en nuestra rama puede ser necesario o recomendable traernos a la rama principal solo alguno de los commits que hicimos en la rama donde hemos desarrollado nuestra nueva funcionalidad. Es en este escenario donde podemos utilizar cherrypicking.
1) Nos movemos a la rama donde estemos implementando la nueva funcionalidad:
git checkout new-feature2) Tras movernos, realizaremos los cambios que necesitemos. Supongamos que obtenemos una salida parecida a la siguiente
git log --oneline3) Bien, pues ¿qué necesitamos hacer para traernos a la rama master los commits d05aa97 4394783?
git checkout master
git cherry-pick d05aa97 43947834) En este momento,
4a) Si nos aparecen conflictos tendremos que resolverlos y posteriormente
git cherry-pick --continue4b) Si por el contrario queremos abortar el cherrypick
git cherry-pick --abort¡OJO!! El cherry-picking está desaconsejado normalmente por los desarrolladores. La razón principal es porque crean dos commits duplicados con los mismos cambios y se pierde la capacidad de rastrear el historial de la confirmación original. Es decir, en casos donde es posible hacer un merge completo. Mejor optar por el.
