Von Gast (nicht überprüft) , 29 April 2026

Drei Strategien, drei Historien

Beim Integrieren eines Feature-Branches in main haben Sie drei Optionen.

Merge Commit

git checkout main
git merge --no-ff feature/login

Pro: bewahrt die Wahrheit der Entwicklung. Contra: nicht-lineare Historie.

Squash and merge

git checkout main
git merge --squash feature/login
git commit -m "Add OAuth login"

Pro: lineare Historie. Contra: verliert Commit-Detail.

Rebase and merge

git checkout feature/login
git rebase main
git checkout main
git merge --ff-only feature/login

Pro: linear; bewahrt atomare Commits. Contra: erfordert Disziplin.

Entscheidungsmatrix

  • Bibliothek oder Kernel-Style-Projekt - rebase and merge.
  • App mit disziplinierten Mitwirkenden - rebase and merge.
  • App mit gemischten Disziplinen - squash.
  • Projekt, wo parallele Branches zahlen - merge commits.

Auf dem Host konfigurieren

gh api -X PATCH repos/:owner/:repo \
  -F allow_merge_commit=false \
  -F allow_squash_merge=true \
  -F allow_rebase_merge=true

Lokale Aquivalente

# Merge commit
git merge --no-ff feature

# Squash
git merge --squash feature && git commit

# Rebase and FF
git rebase main feature
git checkout main
git merge --ff-only feature

Reverten

  • Merge commit: git revert -m 1 <merge-sha>.
  • Squash: git revert <squash-sha>.
  • Rebase: git revert <sha1> <sha2>....