Da Anonimo (non verificato) , 29 Aprile 2026

Perche fare squash

Un branch di feature spesso accumula commit "WIP", "fix typo" e "address review" che seppelliscono l'intento. Lo squash li condensa in un piccolo numero di commit logicamente significativi prima del merge.

Squash al merge

git checkout main
git merge --squash feature
git commit -m "Add feature X"

Squash con rebase interattivo

git rebase -i main

Cambiare pick in squash o fixup.

Workflow autosquash

git commit --fixup=<sha>
git commit --squash=<sha>
git rebase -i --autosquash main

Riordinare per chiarezza

Durante il rebase interattivo, scambiare le righe per riordinare. Un pattern utile: avvicinare le modifiche correlate.

Dividere commit troppo grandi

git reset HEAD^
git add -p src/parser.c
git commit -m "Refactor parser"
git add -p src/runtime.c
git commit -m "Refactor runtime"
git rebase --continue

Errori comuni

Squash di un merge condensa due branch in un mega-commit, spesso involontariamente. Squash di commit gia pushati costringe i collaboratori a rebase.

Preservare gli autori

git commit -m "Add feature X

Co-authored-by: Alice <[email protected]>
Co-authored-by: Bob <[email protected]>"