Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

234 Dokumentationen verfügbar

Wissensdatenbank

Git Rebase Vs Merge

Zuletzt aktualisiert: 20.01.2026 um 10:04 Uhr

Git Rebase vs. Merge: Die richtige Wahl

Merge und Rebase führen Branches zusammen – aber unterschiedlich. Lernen Sie, wann Sie welche Strategie verwenden sollten.

Der Unterschied

# Ausgangssituation
      A---B---C  feature
     /
D---E---F---G    main

# Nach MERGE
      A---B---C
     /         \
D---E---F---G---M    main (M = Merge-Commit)

# Nach REBASE
              A'--B'--C'  feature (neu geschrieben)
             /
D---E---F---G             main

Vergleich

Aspekt Merge Rebase
History Verzweigt (echt) Linear (umgeschrieben)
Commits Original erhalten Neue Commit-Hashes
Merge-Commit Ja Nein
Konfliktlösung Einmal Pro Commit möglich
Sicher für Shared Branches Lokale Branches

Merge verwenden

# Feature-Branch in main mergen
git checkout main
git merge feature-branch

# Mit Merge-Commit erzwingen
git merge --no-ff feature-branch

# Fast-Forward wenn möglich
git merge --ff-only feature-branch

Wann Merge?

✅ Merge ist gut für:
  • Shared/Public Branches
  • Feature-Branches in main/develop
  • Wenn History erhalten bleiben soll
  • Team-Kollaboration

Rebase verwenden

# Feature-Branch auf main rebasen
git checkout feature-branch
git rebase main

# Interaktiver Rebase (Commits bearbeiten)
git rebase -i main
git rebase -i HEAD~3  # Letzte 3 Commits

# Nach Rebase in main mergen (fast-forward)
git checkout main
git merge feature-branch

Interaktiver Rebase

git rebase -i HEAD~4

# Editor öffnet sich:
pick abc1234 Add user model
pick def5678 Add user controller
pick ghi9012 Fix typo
pick jkl3456 Add tests

# Optionen:
# pick   = Commit verwenden
# reword = Commit verwenden, Message ändern
# edit   = Commit verwenden, aber stoppen zum Bearbeiten
# squash = Mit vorherigem Commit zusammenführen
# fixup  = Wie squash, aber Message verwerfen
# drop   = Commit löschen

# Beispiel: Commits zusammenführen
pick abc1234 Add user model
squash def5678 Add user controller
fixup ghi9012 Fix typo
pick jkl3456 Add tests

Wann Rebase?

✅ Rebase ist gut für:
  • Lokale Feature-Branches aktualisieren
  • Commits aufräumen vor PR
  • Lineare History bevorzugt
  • Eigene, nicht gepushte Commits

Die goldene Regel

⚠️ NIEMALS rebasen: Commits die bereits gepusht und von anderen verwendet werden! Rebase ändert Commit-Hashes – das führt zu Chaos im Team.
# ❌ NICHT machen:
git checkout main
git rebase feature  # main ist shared!

# ❌ NICHT machen:
git push origin feature
# ... später ...
git rebase main
git push --force origin feature  # Wenn andere daran arbeiten!

# ✅ OK:
git checkout my-local-feature
git rebase main
git push origin my-local-feature  # Erster Push, niemand hat es

Rebase + Force Push (sicher)

# Wenn nur Sie am Branch arbeiten:
git rebase main
git push --force-with-lease origin feature

# --force-with-lease ist sicherer als --force
# Schlägt fehl wenn jemand anders gepusht hat

Konflikte lösen

# Bei Merge-Konflikten
git merge feature
# CONFLICT in file.js
git status                    # Zeigt Konflikte
# Konflikte in Dateien lösen
git add file.js
git commit                    # Merge abschließen

# Bei Rebase-Konflikten
git rebase main
# CONFLICT in file.js
# Konflikte lösen
git add file.js
git rebase --continue         # Weiter mit nächstem Commit

# Oder abbrechen
git rebase --abort

Typischer Workflow

# 1. Feature-Branch erstellen
git checkout -b feature/new-login

# 2. Arbeiten, committen
git add .
git commit -m "Add login form"
git commit -m "Add validation"

# 3. Vor PR: main holen und rebasen
git fetch origin
git rebase origin/main

# 4. Optional: Commits aufräumen
git rebase -i origin/main

# 5. Pushen
git push origin feature/new-login

# 6. PR erstellen, Review, Merge (auf GitHub/GitLab)

Squash Merge (GitHub/GitLab)

# Alle Commits eines PRs werden zu einem:

# Feature-Branch:
abc123 Add login form
def456 Fix styling
ghi789 Add tests
jkl012 Fix review comments

# Nach Squash Merge in main:
xyz999 Add login feature (#123)

# Aktivieren in GitHub:
# Settings → Merge button → Allow squash merging
💡 Empfehlung: Rebase lokal für saubere History, Merge (oder Squash Merge) für PRs. So haben Sie das Beste aus beiden Welten.

Weitere Informationen