Chuck's Academy

GIT

Rebase y Squash en Git

En este capítulo, aprenderemos dos técnicas avanzadas de Git que te ayudarán a mantener un historial de commits limpio y organizado: rebase y squash. Estas herramientas son útiles para reordenar commits, fusionar múltiples commits en uno solo, y evitar la creación de merges innecesarios. Al final de este capítulo, sabrás cómo usar rebase de manera segura y cómo combinar commits para mejorar la claridad del historial.

¿Qué es Rebase?

El comando git rebase te permite mover o aplicar commits de una rama sobre otra. A diferencia de git merge, que crea un nuevo commit de fusión, git rebase toma los commits de una rama y los "reaplica" en la parte superior de otra rama. Esto mantiene un historial más lineal y fácil de seguir.

Uso Básico de Rebase

Supongamos que has trabajado en una rama llamada feature-X y ahora deseas integrar esos cambios en la rama main. En lugar de hacer un merge, puedes hacer un rebase para aplicar los commits de feature-X en main.

Primero, cambia a la rama feature-X:

bash

Luego, realiza el rebase sobre main:

bash
"Con el comando 'git rebase main' aplicas los commits de la rama feature-X en la parte superior de la rama main, manteniendo un historial más limpio y sin un commit de fusión."

Si surgen conflictos durante el rebase, Git te pedirá que los resuelvas manualmente. Después de resolver los conflictos, usa:

bash
"El comando 'git rebase --continue' permite continuar con el proceso de rebase después de resolver los conflictos."

Rebase Interactivo

El rebase interactivo te ofrece aún más control sobre los commits. Puedes usar este modo para reordenar, modificar o eliminar commits antes de fusionarlos en otra rama. Para iniciar un rebase interactivo, usa el siguiente comando:

bash
"El comando 'git rebase -i seguido del identificador del commit' abre un editor donde puedes seleccionar qué hacer con cada commit: reordenar, fusionar o modificar."

Durante el rebase interactivo, puedes elegir diferentes opciones para cada commit:

  • pick: Deja el commit tal como está.
  • reword: Cambia el mensaje del commit.
  • squash: Fusiona el commit con el anterior.
  • drop: Elimina el commit.

Squash: Fusionando Commits

El squash es una técnica que te permite combinar múltiples commits en uno solo. Esto es útil cuando haces varios commits pequeños y quieres fusionarlos para mantener un historial de commits más limpio. El squash es comúnmente utilizado en un rebase interactivo.

Por ejemplo, si tienes una serie de commits como:

  • Fix typo
  • Add feature
  • Fix bug

Puedes fusionarlos en un solo commit más descriptivo usando el rebase interactivo:

bash
"Con el comando 'git rebase -i HEAD tilde 3' inicias un rebase interactivo para los últimos tres commits. Allí puedes usar squash para combinarlos en uno solo."

Durante el rebase interactivo, selecciona la opción squash para los commits que deseas fusionar. Git te pedirá que edites el mensaje del commit resultante.

Precauciones al Usar Rebase

Aunque el rebase es muy útil, debes tener cuidado al usarlo en ramas que ya han sido compartidas con otros colaboradores. Reescribir el historial con rebase en esas ramas puede causar problemas, ya que los commits reaplicados tendrán nuevos identificadores. Para evitar esto, es recomendable usar rebase solo en ramas locales que no han sido compartidas.

Si has realizado un rebase en una rama que ya has compartido y necesitas forzar la actualización en el repositorio remoto, puedes usar:

bash
"El comando 'git push --force' fuerza la actualización del historial en el repositorio remoto después de un rebase, pero debes tener cuidado ya que esto puede sobrescribir el trabajo de otros colaboradores."

Conclusión

esque de diferencias entre squash y rebase en gitesque de diferencias entre squash y rebase en git

En este capítulo, hemos aprendido a utilizar git rebase para mantener un historial de commits limpio y organizado, así como la técnica de squash para combinar varios commits en uno solo. Aunque estas herramientas son poderosas, es importante usarlas con precaución, especialmente cuando se trabaja en colaboración con otros desarrolladores. En el próximo capítulo, exploraremos cómo usar stash y limpiar tu repositorio para mantener un entorno de trabajo ordenado.


Pregúntame lo que sea