Git Rebase vs. Merge: Die richtige Wahl | Enjyn Gruppe
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

235 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

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120