Rebase Interactivo
El rebase interactivo es una de las funciones más potentes de Git. Te permite reescribir tu historial de commits de forma flexible: puedes reordenar, combinar (squash), editar mensajes o incluso eliminar commits. Es como un editor de precisión para tu historial.
Advertencia: El rebase reescribe la historia. Nunca hagas rebase de commits que ya han sido subidos a un repositorio compartido, a menos que sepas exactamente lo que haces y lo hayas coordinado con tu equipo. Es ideal para limpiar tus commits locales antes de compartirlos.
Creemos una serie de commits para practicar:
echo "First change" >> hello.txt
git commit -am "First change"
echo "Second change" >> hello.txt
git commit -am "Second change"
echo "Third change" >> hello.txt
git commit -am "Third change"
(La opción -am es un atajo para añadir cambios de archivos rastreados y hacer el commit en un solo paso).
Ahora, supongamos que queremos combinar los dos primeros cambios en uno solo y mejorar el mensaje del tercero. Iniciamos el rebase interactivo:
git rebase -i HEAD~3
-i: Significa "interactivo".
HEAD~3: Indica que queremos trabajar con los últimos 3 commits.
Se abrirá tu editor con una lista similar a esta:
pick 63c95db First change
pick 68e7909 Second change
pick 5371424 Third change
Comandos comunes en el editor de rebase:
pick (p): Usar el commit tal cual.
reword (r): Usar el commit, pero cambiar su mensaje.
squash (s): Combinar este commit con el anterior (el de arriba).
drop (d): Eliminar el commit.
Nuestro plan:
- Combinar "Second change" en "First change".
- Cambiar el mensaje de "Third change".
Modifica el archivo para que se vea así:
pick abc1234 First change
squash def5678 Second change
reword ghi9101 Third change
Nota: No cambies los hashes, solo las palabras de la izquierda.
Si usas Vim:
- Presiona
i para entrar en modo inserción.
- Realiza los cambios.
- Presiona
Esc, escribe :wq y pulsa Enter.
Proceso de Rebase:
- Squash: Git abrirá el editor para que escribas un mensaje para el commit combinado. Puedes poner algo como:
Combined first and second changes.
- Reword: Git abrirá el editor para que cambies el mensaje del tercer commit. Pon algo como:
Improved third change.
Al terminar, verás el mensaje "Successfully rebased". Si revisas git log --oneline, verás que tu historial ahora es más limpio y profesional.
Si algo sale mal durante el proceso, siempre puedes volver al estado original con:
git rebase --abort