Michael Liendo

Michael L

¿Cómo hacer squash en Git?

¿Cómo hacer squash en Git?

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.png

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

Untitled.png

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.png

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.png

Luego presionaremos dos veces la tecla Esc

Untitled.png

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

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

Untitled.png

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 - 2024