Menu
Coddy logo textTech

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

CommandWhat it does
git merge featurefeature in den aktuellen Branch mergen
git merge --no-ff featureImmer einen Merge-Commit erstellen
git merge --ff-only featureNur mergen, wenn ein Fast-forward möglich ist
git merge --squash featureDie Commits des Branches zu einem zusammenfassen
git merge --abortEinen Merge mit Konflikten abbrechen

Fast-forward vs. Merge-Commit

ScenarioFast-forwardMerge commit (--no-ff)
Erstellt einen neuen CommitNeinJa
Behält einen Nachweis des BranchesNeinJa
Tritt ein, wennDer aktuelle Branch nicht divergiert istBeide Branches neue Commits haben

Einen Merge-Konflikt lösen

Wenn beide Branches dieselben Zeilen geändert haben, hält Git an.

StepCommandResult
1Die konfliktbehafteten Dateien bearbeitenDie richtigen Zeilen auswählen, die Marker entfernen
2git add <file>Den Konflikt als gelöst markieren
3git commitDen 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.
Coddy programming languages illustration

Lerne Git mit Coddy

LOS GEHT'S