Back

Squashing Git Commits: El camino del desarrollador hacia un historial limpio

Squashing Git Commits: El camino del desarrollador hacia un historial limpio

Como desarrollador, ¿alguna vez te has encontrado con un historial de commits desordenado lleno de numerosos commits pequeños e incrementales? Esto puede hacer que el historial de tu proyecto sea difícil de navegar y entender. Afortunadamente, Git proporciona una técnica poderosa llamada ""squashing"" que te permite combinar múltiples commits en un solo commit coherente. En este artículo, exploraremos qué es git squash, sus beneficios y cómo puedes usarlo de manera efectiva para mantener un historial de commits limpio y legible.

Puntos clave

  • Git squash combina múltiples commits en un solo commit, lo que resulta en un historial de proyecto más limpio.
  • Squashing es beneficioso para revisiones de código, revertir cambios y la legibilidad en general.
  • Puedes hacer squash de commits usando rebase interactivo (git rebase -i) o la opción --squash durante la fusión.
  • Sigue las mejores prácticas, como hacer squash de cambios relacionados, escribir mensajes de commit claros y comunicarte con tu equipo.

¿Qué es Git Squash?

Git squash es el proceso de tomar una serie de commits y condensarlos en un solo commit. Es particularmente útil cuando tienes una rama de funcionalidad con muchos commits pequeños que desordenan el historial. Al hacer squash de estos commits, puedes presentar un historial más optimizado y pulido a tus colaboradores.

¿Por qué hacer Squash de Commits?

Hay varias razones por las que podrías querer hacer squash de commits en Git:

  1. Historial más limpio: Squashing te permite crear un historial de commits más limpio y legible al combinar cambios relacionados en un solo commit.

  2. Revisión de código más fácil: Cuando haces squash de commits antes de fusionar una rama de funcionalidad, los revisores pueden enfocarse en el cambio general en lugar de revisar numerosos commits pequeños.

  3. Revertir cambios: Si necesitas revertir una funcionalidad, es mucho más simple revertir un solo commit con squash que múltiples commits individuales.

Cómo hacer Squash de Commits en Git

Hay dos formas principales de hacer squash de commits en Git: usando rebase interactivo o la opción --squash durante la fusión.

Rebase interactivo

Para hacer squash de commits usando rebase interactivo, sigue estos pasos:

  1. Ejecuta git rebase -i HEAD~N, donde N es el número de commits que quieres hacer squash. Por ejemplo, git rebase -i HEAD~3 se enfocará en los últimos tres commits.

  2. En el editor de rebase interactivo, cambia la palabra pick a squash (o s) para los commits que quieres hacer squash. Deja el primer commit como pick.

  3. Guarda y cierra el editor. Git abrirá otro editor solicitando el mensaje de commit para el commit con squash.

  4. Ingresa el mensaje de commit deseado, guarda y cierra el editor. Los commits seleccionados se combinarán en un solo commit.

Fusión con —squash

Para hacer squash de commits mientras fusionas una rama, usa la opción --squash:

  1. Asegúrate de estar en la rama en la que quieres fusionar (por ejemplo, main o develop).

  2. Ejecuta git merge --squash <nombre-de-rama>, reemplazando <nombre-de-rama> con el nombre de la rama que quieres fusionar.

  3. Git combinará todos los cambios de la rama de origen en un solo commit en tu rama actual.

  4. Usa git commit para crear un nuevo commit con los cambios combinados.

Mejores prácticas para hacer Squash de Commits

Al hacer squash de commits, ten en cuenta estas mejores prácticas:

  • Haz squash de cambios relacionados: Solo haz squash de commits que estén relacionados y formen una unidad lógica de trabajo.

  • Escribe mensajes de commit claros: Proporciona un mensaje de commit claro y descriptivo para el commit con squash que refleje el cambio general.

  • Evita hacer squash de commits públicos: No hagas squash de commits que ya hayan sido enviados a un repositorio público, ya que puede causar confusión para otros colaboradores.

  • Comunícate con tu equipo: Asegúrate de que tu equipo esté al tanto de tus prácticas de squashing para mantener la consistencia y evitar conflictos.

Conclusión

Hacer squash de commits en Git es una técnica valiosa para mantener un historial de commits limpio y organizado. Al combinar commits relacionados en un solo commit significativo, puedes mejorar la legibilidad y la capacidad de gestión de tu proyecto. Ya sea que uses rebase interactivo o la opción --squash durante la fusión, hacer squash de commits te ayuda a presentar un historial pulido y coherente a tus colaboradores. Recuerda seguir las mejores prácticas y comunicarte con tu equipo para garantizar un flujo de trabajo fluido y efectivo.

Preguntas frecuentes

En general, no se recomienda hacer squash de commits que hayan sido enviados a un repositorio público, ya que puede causar confusión para otros colaboradores. Lo mejor es hacer squash en ramas locales o privadas antes de fusionar.

Si surgen conflictos durante el proceso de squashing, deberás resolverlos manualmente. Git te guiará a través del proceso de resolución de conflictos y puedes usar herramientas como `git mergetool` para ayudarte.

Sí, puedes usar la opción `--dry-run` con `git rebase -i` para ver cómo se vería el commit con squash sin realizarlo realmente. Esto te permite revisar los cambios y hacer los ajustes necesarios.

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers