Rebase vs Merge : Quand Utiliser Chaque
Vue Rapide
| Action | Historique | Simplicité | Lisibilité Chronologique |
|---|---|---|---|
| merge | Préserve branches | Haute | Moyen (branches visibles) |
| rebase | Réécrit commits | Moyen | Haute (linéaire) |
git merge
- Avantages : sûr, non destructif
- Inconvénient : commits de merge nombreux
git rebase
- Avantages : historique net, bisect plus simple
- Inconvénient : réécrit, dangereux si déjà poussé
Exemple Merge
A---B---C main
\
D---E featureAprès merge :
A---B---C---M
\ D---EExemple Rebase
Rebase feature sur main :
A---B---C main
\
D'--E'Puis fast-forward.
Workflow Typique Rebase Avant Merge
bash
git checkout feature/x
git fetch origin
git rebase origin/main
# résoudre si besoin
git checkout main
git merge feature/x # fast-forwardQuand Préférer Merge
| Contexte | Raison |
|---|---|
| Historique auditable | Traces exactes |
| Longue feature collaborative | Moins de réécriture |
| Débutants | Réduction erreurs |
Quand Préférer Rebase
| Contexte | Raison |
|---|---|
| Commits WIP bruyants | Squash nettoie |
| Repo open source exige lineaire | Politique standard |
| Bisect fréquent | Menos bruit |
Rebase Interactif (Nettoyage)
bash
git rebase -i HEAD~5
# pick / squash / rewordRègle d'Or
Ne jamais rebase une branche déjà partagée sans coordination.
Annuler un Rebase
bash
git rebase --abortConflits en Rebase
Chaque commit rejoué peut générer conflit → résoudre → git rebase --continue.
Stratégie Mixte
- Rebase local pour nettoyer
- Merge dans main (pas fast-forward) pour conserver contexte
Résumé
Merge = sécurité et contexte. Rebase = propreté et linéarité. Choisir selon équipe, audit, complexité.
