Cómo unir todos los commits en una rama, antes de hacer un merge?

Pues si usas GIT para el control de versiones de código, y Trunk Based Development como metodología, hay ocasiones en que tu rama puede llegar a tener un monton de commits pequeñitos relacionados con un feature específico (yo personalmente hago commit cada cambio chico jeje), así que en algunos casos es necesario hacer un squash de los cambios y e incluir todos los ajustes en un único commit.

Si quieres hacerlo para todos los commits de una rama específica, puedes ejecutar los siguientes pasos:

Nos pasamos a la rama principal, hacemos pull, y creamos una nueva rama temporal

git checkout main 
git pull 
git checkout -b  rama_temporal main

Obtenemos los cambios de nuestra rama de trabajo, y los unimos en un solo commit

git merge --squash rama_de_trabajo

En caso de que existieran conflictos, se deben corregir y hacer un commit de dichos cambios con:

git commit

Finalmente podemos hacer un reset en nuestra rama de trabajo, con la rama temporal creada previamente. Hacemos push de los cambios y si es necesario, borramos la rama temporal

git checkout rama de trabajo 
git reset --hard rama_temporal 
git push -f 
git branch -D rama_temporal

Listo! eso es todo!

Deja una respuesta