Git, Rebase

From Wiki de Caballero
Jump to navigation Jump to search

Rebase (o Reorganizar) permite tomar los cambios confirmados en una rama y re-aplicarlos sobre otra, permitiendo que el flujo de trabajo en git se vea mas ordenado, como si todos los cambios se hubieran realizado de forma lineal, sin ramificaciones.

  • Tomando como base la siguiente situación:

01-img-ramas.png


  • Se desean añadir los cambios hechos en la rama experiment, a la rama master. La primera opción es usar merge para alcanzar este objetivo:

02-img-merge.png

  • Al utilizar merge se cumple el objetivo de añadir los cambios a master, pero de igual forma van quedando 'rastros' de las ramas, lo que en situaciones donde hay gran número de ramas, puedes hacer que se vuelva confuso seguir los cambios.

Para solucionar esto, podemos hacer uso de 'rebase'.

Comando rebase

Lo primero que debemos hacer es movernos a la rama que deseamos integrar, y luego ejecutar rebase acompañado de la rama a la que queremos integrar los cambios.

git checkout experiment
git rebase master
  • Esto generara una nueva confirmación o commit al final del flujo, el que contendrá los cambios de la rama experiment.

03-img-rebase.png


Ahora para mover el 'puntero' hacia este ultimo commit que se creo por medio del rebase debemos ejecutar lo siguiente:

git checkout master
git merge experiment

Una vez hecho esto, los cambios de la experiment ya están correctamente integrados a master, y se puede borrar con seguridad la rama experiment.

git branch -d experiment

Y finalmente realizamos el push al repositorio remoto.

git push origin master
  • Como resultado del rebase tendremos un flujo lineal de trabajo en git, que se ve mas ordenado, y permite seguir de forma mas fácil los cambios realizados en el proyecto.

04-img-rebase-limpio.png


  • Nota:Es importante solo realizar un rebase sobre cambios que no han sido publicados, porque de lo contrarios, si se realiza sobre cambios que ya han sido publicados, y se hace un push, esto provocara conflictos a los otros usuarios que hagan uso del repositorio.