Pourquoi squasher
Une branche feature accumule souvent des commits "WIP", "fix typo" et "address review" qui enterrent l'intention. Le squash les condense en un petit nombre de commits logiquement significatifs avant le merge.
Squash au merge
git checkout main
git merge --squash feature
git commit -m "Ajouter feature X"
Squash par rebase interactif
git rebase -i main
Workflow autosquash
git commit --fixup=<sha>
git commit --squash=<sha>
git rebase -i --autosquash main
Réordonner pour la clarté
Pendant le rebase interactif, échangez des lignes pour réordonner.
Diviser des commits trop gros
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
Erreurs courantes
Squasher à travers un merge écrase deux branches en un méga-commit. Squasher des commits déjà poussés force les collaborateurs à rebaser.
Préserver les auteurs
git commit -m "Ajouter feature X
Co-authored-by: Alice <[email protected]>
Co-authored-by: Bob <[email protected]>"