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 |