Was "linear" bedeutet
Eine lineare Historie hat keine Merge-Commits — jeder Commit hat genau einen Elternteil.
Warum Linearitat wichtig ist
git bisectlauft auf einem Pfad.git log --onelinesagt die Wahrheit ohne--graph.git revertzielt auf einen einzelnen Commit sauber.
Linearitat lokal erreichen
git checkout feature/login
git fetch origin
git rebase origin/main
git push --force-with-lease
Auf Remote durchsetzen
- Rebase and merge.
- Squash and merge.
- Fast-forward only.
Lokal durchsetzen
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
git merge --squash feature/login
git commit -m "Add OAuth login"
# Rebase and merge
git rebase main feature/login
git checkout main
git merge --ff-only feature/login
Nicht-lineare Historie erkennen
git log --merges
git log --first-parent --oneline