Rebases
Last updated
Was this helpful?
Last updated
Was this helpful?
La ilustración describe un escenario para el comando rebase.
Hay dos maneras de poner las dos ramas juntas, la primera es la que ya conocemos como merge que situados en la rama spaghetti podrÃamos dar el comando:
y obtendrÃamos:
Los parent de este nuevo commit (rosado) serian los últimos de cada rama.
La otra manera de juntar los branch es con rebase, este comando en primera instancia busca el primer commit en común entre los dos branch (commit rojo en nuestro ejemplo), toda la historia antes de este commit ya esta compartida.
Seguidamente git ubica los commit de la actual rama sobre la rama que se le esta haciendo rebase:
Al igual que el merge habrÃa que resolver los conflictos si los hay, ahora el branch spaghetti branch contiene los commit propios y ademas los de el branch master. Si seguidamente se hace rebase de forma invertida git detecta la anterior acción y lo único que hace es pasar al Head el branch master:
A diferencia del merge, terminado el rebase se visualiza como un simple branch :
Preserva la historia del proyecto
Las historia con muchos merge puede ser confusa de leer
El merge nunca miente
El proyecto luce mas ágil y limpio
La historia limpia que muestra no es tan real, por lo que los commit que se "monta" de un branch a otro son nuevos commit (copias de los originales, que se quedan sin branch y el garbage collector puede eliminar), realmente cambia las historia del proyecto.
Algunos comandos avanzados de git le pueden importar la historia real del proyecto
Puede que se presenten situaciones confusas como el mismo mensaje en diferentes commits
Rebase es un comando útil si se sabe que se está haciendo y se conocen las consecuencias, pero si tiene dudas es mejor utilizar el merge.