Git Merge
Zuletzt aktualisiert
git merge holt die Commits eines anderen Branches in deinen aktuellen. Wenn der aktuelle Branch nicht divergiert ist, führt Git einen Fast-forward durch - es bewegt einfach den Zeiger nach vorne. Wenn beide Branches neue Commits haben, erstellt Git einen Merge-Commit, der die beiden Historien miteinander verbindet. Anders als rebase bewahrt merge die exakte Historie beider Branches.
Probiere das im Terminal-Playground aus - eine echte Shell in deinem Browser, nichts zu installieren.
Syntax
| Command | What it does |
|---|---|
git merge feature | feature in den aktuellen Branch mergen |
git merge --no-ff feature | Immer einen Merge-Commit erstellen |
git merge --ff-only feature | Nur mergen, wenn ein Fast-forward möglich ist |
git merge --squash feature | Die Commits des Branches zu einem zusammenfassen |
git merge --abort | Einen Merge mit Konflikten abbrechen |
Fast-forward vs. Merge-Commit
| Scenario | Fast-forward | Merge commit (--no-ff) |
|---|---|---|
| Erstellt einen neuen Commit | Nein | Ja |
| Behält einen Nachweis des Branches | Nein | Ja |
| Tritt ein, wenn | Der aktuelle Branch nicht divergiert ist | Beide Branches neue Commits haben |
Einen Merge-Konflikt lösen
Wenn beide Branches dieselben Zeilen geändert haben, hält Git an.
| Step | Command | Result |
|---|---|---|
| 1 | Die konfliktbehafteten Dateien bearbeiten | Die richtigen Zeilen auswählen, die Marker entfernen |
| 2 | git add <file> | Den Konflikt als gelöst markieren |
| 3 | git commit | Den Merge abschließen |
Git merge FAQ
Wie merge ich in Git einen Branch in einen anderen?
Wechsle zu dem Branch, in den du mergen möchtest (z. B.
git switch main), und führe dann git merge feature aus. Git kombiniert die Commits von feature in main, entweder per Fast-forward oder durch das Erstellen eines Merge-Commits, falls beide Branches divergiert sind.Was ist der Unterschied zwischen einem Fast-forward und einem Merge-Commit?
Ein Fast-forward tritt ein, wenn sich dein aktueller Branch nicht bewegt hat, seit der andere Branch abgezweigt ist - Git schiebt einfach den Zeiger nach vorne, ohne neuen Commit. Ein Merge-Commit wird erstellt, wenn beide Branches neue Commits haben, und verbindet ihre Historien. Verwende
--no-ff, um immer einen Merge-Commit zu erstellen, oder --ff-only, um einen Fast-forward zu erzwingen.Wie löse ich einen Merge-Konflikt?
Wenn ein Merge in Konflikt gerät, markiert Git die kollidierenden Abschnitte in den betroffenen Dateien mit den Markern
<<<<<<<, ======= und >>>>>>>. Bearbeite jede Datei, um den korrekten Inhalt zu behalten und die Marker zu entfernen, mache dann git add auf die gelösten Dateien und git commit, um den Merge abzuschließen.Wie mache ich einen Merge rückgängig oder breche ihn ab?
Wenn der Merge noch läuft (Konflikte ungelöst), führe
git merge --abort aus, um ihn abzubrechen und den Zustand vor dem Merge wiederherzustellen. Ist der Merge lokal bereits abgeschlossen, bringt git reset --hard ORIG_HEAD den Branch an seine Position vor dem Merge zurück (anders als HEAD~1 stimmt das auch nach einem Fast-forward - verwirft aber nicht committete Arbeit). Ist der Merge gepusht, verwende git revert -m 1 <merge-hash>.Kann ich das online üben?
Ja. Öffne den Terminal-Playground, um
git merge in einer echten Shell in deinem Browser auszuführen - nichts zu installieren. Coddys kostenloser interaktiver Git-Kurs behandelt auch das Mergen und das Lösen von Konflikten Schritt für Schritt.