Par Anonyme (non vérifié) , 29 avril 2026

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 bisect parcourt un chemin, pas un graphe.
  • git log --oneline dit la vérité sans --graph.
  • git revert cible 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