L'opció --squash de la comanda git merge permet fusionar els canvis d'una branca en una altra
en un únic commit.
De vegades, el treball en una branca pot generar molts commits (micro-commits) que no aporten informació rellevant.
Amb aquesta opció, és possible fusionar tots aquests commits en un de sol, evitant la sobrecàrrega d'informació
i contaminació de l'historial.
Aquesta opció és especialment útil en la fusió de branques de funcionalitat,
que veurem en el següent bloc Estratègies de ramificació.
El funcionament de git merge --squash consisteix en aplicar tots els canvis de la branca especificada
a l'Àrea de Preparació (Staging Area), però sense realitzar el commit, que caldrà fer manualment.
S'han fusionat tots els canvis de la branca canvis
a la branca principal main en un únic commit.
jpuigcerver@fp:~/git_squash(canvis)$gitcheckoutmain
Switched to branch 'main'jpuigcerver@fp:~/git_squash(main)$gitmerge--squashcanvis
Updating 863c0b2..824cb01Fast-forwardSquash commit -- not updating HEAD README.md | 3 +++ 1 file changed, 3 insertions(+)jpuigcerver@fp:~/git_squash(main)$gitstatus
On branch mainChanges to be committed: (use "git restore --staged <file>..." to unstage)modified: README.mdjpuigcerver@fp:~/git_squash(main)$gitcommit-m"Canvis A, B i C"[main 00b7e27] Canvis A, B i C 1 file changed, 3 insertions(+)jpuigcerver@fp:~/git_squash(main)$gitlga
*824cb01-(0 seconds ago)Canvi C-Joan Puigcerver(canvis)*58d9407-(0 seconds ago)Canvi B-Joan Puigcerver*b460f08-(0 seconds ago)Canvi A-Joan Puigcerver| *00b7e27-(0 seconds ago)Canvis A, B i C-Joan Puigcerver(HEAD -> main)|/ *863c0b2-(0 seconds ago)Commit inicial-Joan Puigcerver