Michael Liendo

Cómo hacer un squash en Git?

En este artículo, podrás hacer un squash en Git. Squash es una técnica que nos permite hacer varios commits en un solo commit, haciendo más fácil leer el historial de cambios y mantener el repositorio limpio.

git git-squash

Hay dos maneras que conozco de hacer squash, en éste post les enseñaré las dos maneras. Pero primero les diré la definición de Squash

¿Qué es Squash?

Hacer squash en Git, (“comprimir”), hace que nuestra rama a mergear (a la que haremos un pull request) se componga de un solo commit de esta manera mergearemos un solo commit de código a nuestra rama de desarrollo que contendrá una funcionalidad completa.

Ahora sí, a los pasos

Parado en la branch que queremos hacer squash, ahora en la consola haremos

git log

retornará

Untitled

Algo así, de ahí vamos a copiar el hash que está arriba de origin/main, main en mi caso es este b6adbbcd8f99935113cf1e24943736fb2c501e26

Untitled

Luego vamos a hacer rebase

git rebase -i TU-HASH

en mi caso es

git rebase -i b6adbbcd8f99935113cf1e24943736fb2c501e26

Te va a mostrar algo así, te abrirá el editor VIM

Untitled

Tendrás que remplazar todos las lineas que dice pick por squash o s excepto el la primera línea

Para escribir en VIM deberás darle a la tecla i

Quedará así

Untitled

Luego presionaremos dos veces la tecla Esc

Untitled

al hacer eso, deberás escribir :wq y darle enter

Ahí pasará a pedirte el mensaje final para el commit comprimido

Untitled

Colocas el mensaje, pulsando i para escribir, luego presionas dos veces Esc y escribes :wq

Y listo, ya hiciste Squash

Ahora debes para subirlo a tu repositorio, basta con escribir

git push -f

Y listo, ya estaría listo

La otra manera de hacer Squash

Para ello, parado en la rama para hacer squash, se coloca

git reset --soft TU-HASH

Anteriormente expliqué como se obtiene el hash

Luego harás

git commit --amend

Se abrirá el editor VIM, para colocar el mensaje final del commit, presiona i para escribir

Luego presionas Esc y escribes :wq para guardar y salir

Ahora con

git push -f

Se subiría tus cambios a tu repositorio

Si haces git log ahora, deberías de tener 1 solo commit encima de origin/main

con el nombre que le diste en ammend

Por nada hagas git reset --hard al menos de que quieras borrar todo tu progreso

Extras

Recomiendo usar Conventional Commits para tu mensajes de commit

Hecho con ❤️ por Michael Liendo © 2021 - 2025