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á

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

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

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í

Luego presionaremos dos veces la tecla Esc

al hacer eso, deberás escribir :wq y darle enter
Ahí pasará a pedirte el mensaje final para el commit comprimido

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 --hardal menos de que quieras borrar todo tu progreso
Extras #
Recomiendo usar Conventional Commits para tu mensajes de commit