Git Rebase
Sirve para actualizar el punto donde creamos una rama.
Lo normal es usar el rebase para evitar los conflictos entre ramas al hacer merge. Se usa para cambiar el punto base de donde empieza la rama que queremos unir (por ejemplo) al master cuando el master tiene commits con los que puede haber conflicto.
Primero se mueve a la rama que se quiere reubicar
git checkout rama-nombre
Con git rebase se indica sobre que rama se va a reubicar
git rebase master
Y ya se puede ir a la rama master y hacer el merge de tipo fast-forward
git checkout master
git merge rama-nombre
Rebase - Unir dos commits
Con un rebase interactivo se pueden hacer modificaciones a los commits, como renombrarlos o hasta fusionarlos. Con el comando siguiente se indica que se quiere hacer un rebase interactivo a los últimos 4 commits
git rebase -i HEAD~4
Con el comando squash se indica que ese commit se debe fusionar con el commit anterior, luego el sistema pedirá modificar el mensaje del nuevo commit.
Puede que sea necesario después de hacer un rebase interactivo asegurarse que el HEAD está apuntando a la posición correcta
git checkout master
Rebase - Dividir un commit
Para editar un commit y dividirlo se usa tambien git rebase
git rebase -i HEAD~1
Al usar el comando edit, el sistema avisa que luego de hacer todas las modificaciones que necesite para terminar debe ejecutar
git rebase --continue
En este ejemplo se quiere dividir un commit en 2 (uno por cada archivo modificado), entonces se reinician los cambios del commit sin eliminar las modificaciones
Se procede a crear cada uno de los nuevos commits y para terminar se llama a git rebase
git add README.md
git commit -m "mensaje 1"
git add villanos.md
git commit -m "mensaje 2"
git rebase --continue