Sobes.tech
Middle

Was ist der Unterschied zwischen den Befehlen merge und rebase im Versionskontrollsystem Git?

sobes.tech KI

Antwort von AI

merge verbindet Zweige, indem es einen neuen Commit mit zwei Eltern erstellt und die Änderungsverlauf beibehält. rebase verschiebt Commits eines Zweigs auf einen anderen, ordnet die Historie linear, ändert jedoch die Commit-Hashes.

  • Bei merge:

    • Es wird ein neuer Merge-Commit erstellt.
    • Die Zweiggeschichte bleibt explizit.
    • Konflikte können auftreten, die im neuen Commit gelöst werden.
    # Beispiel für merge
    git checkout feature-branch
    git merge main
    # Konflikte lösen, falls vorhanden
    git commit -m "Merge main into feature-branch"
    
  • Bei rebase:

    • Commits "werden verschoben" und auf den Zielzweig angewendet.
    • Die Geschichte wird linear, kann "sauberer" aussehen.
    • Die Hashes der verschobenen Commits ändern sich.
    • Konflikte können für jeden verschobenen Commit auftreten.
    • Nicht empfohlen für Zweige, die bereits veröffentlicht sind und von anderen Entwicklern genutzt werden, da es die Historie ändert.
    # Beispiel für rebase
    git checkout feature-branch
    git rebase main
    # Konflikte lösen, falls vorhanden (für jeden Konflikt-commit wiederholen)
    git add .
    git rebase --continue
    # oder git rebase --skip, um Commit zu überspringen
    # oder git rebase --abort, um abzubrechen
    
Eigenschaft merge rebase
Änderung der Historie Bewahrt die Historie Ändert die Historie (überschreibt)
Commits Erstellt einen Merge-Commit Verschiebt bestehende Commits
Linearität der Historie Nein (Zweige divergieren) Ja (vereinfachte Historie)
Ansatz Nicht destruktiv Potenziell destruktiv
Anwendbarkeit Öffentliche, gemeinsame Zweige Lokale, persönliche Zweige