erknrio
8/3/2016 - 1:31 PM

Rebase de forma segura. No emplear si la rama está siendo utilizada por varios desarrolladores puesto que puede sobreescribir los cambios si

Rebase de forma segura. No emplear si la rama está siendo utilizada por varios desarrolladores puesto que puede sobreescribir los cambios sin avisar de conflictos produciendo comportamientos indeseados.

Introducción

Realizamos un rebase de una rama diferente a master.

Preparación

Nos movemos a nuestra rama en la que desarrollamos las nuevas características.

git checkout feature

Creamos una nueva rama para evitar problemas con los posibles conflictos

git checkout -b temporary-branch

Pasamos los cambios de master a la nueva rama temporal con un rebase interactivo. De esta forma podremos rehacer los commits, cambiar sus mensajes, unirlos con squash, etc.

Así limpiamos el historial.

git rebase -i master

Una vez arreglados los comflictos y si todo ha ido bien nos pasamos a master y hacemos un merge de la rama temporal.

Recordemos que si la rama a la que queremos hacer el rebase es usada por varias personas es mejor emplear merge, es más seguro y deja una prueba de que se realizó dicho merge).

git checkout master
git merge temporary-branch

Eliminamos rama temporal y rama de funcionalidad en local (si es necesario).

git branch -d temporary-branch
# Solo si es necesario
git branch -d feature

Eliminamos la rama feature si estaba pusheada en remoto.

git push origin --delete feature