Ce que "linéaire" signifie
Un historique linéaire n'a pas de merge commits — chaque commit a exactement un parent.
Pourquoi linéaire compte
git bisectparcourt un chemin, pas un graphe.git log --onelinedit la vérité sans--graph.git revertcible un seul commit proprement.- Les relecteurs voient un changement logique par commit.
Atteindre la linéarité localement
git checkout feature/login
git fetch origin
git rebase origin/main
git push --force-with-lease
Faire respecter sur le remote
Sur GitHub : branch protection rules → "Require linear history".
- Rebase and merge.
- Squash and merge.
- Fast-forward only.
Application locale
git config --global pull.rebase true
git config --global pull.ff only
git config --global rebase.autoStash true
Squash vs rebase merge
# Squash and merge: 1 commit sur main par PR
git merge --squash feature/login
git commit -m "Add OAuth login"
# Rebase and merge: chaque commit sur main
git rebase main feature/login
git checkout main
git merge --ff-only feature/login
Détecter un historique non-linéaire
git log --merges
git log --first-parent --oneline