Tutorial: Richtig Mergen in Git

Melden

Dieses Tutorial konzentriert sich auf das Mergen in Git, da dies der häufigste Kontext für diesen Begriff in der Softwareentwicklung ist. (Solltest du "Merge" in Bezug auf Excel, SQL oder Data Science meinen, gib mir einfach kurz Bescheid!)


Das „Zusammenführen“ (Merging) ist ein grundlegender Prozess in der Versionsverwaltung. Dabei werden die Änderungen aus einem Branch (z. B. einem Feature-Branch) in einen anderen Branch (z. B. main oder master) übernommen.

1. Das Grundprinzip

Stell dir vor, du arbeitest an einer neuen Funktion in einem eigenen Branch. Währenddessen wurden im Hauptzweig (main) Fehler korrigiert. Mit einem Merge bringst du beide Entwicklungsstände zusammen.

  • Source Branch: Der Branch, aus dem die Änderungen kommen (z. B. feature-login).
  • Target Branch: Der Branch, in den die Änderungen einfließen sollen (z. B. main).

2. Der Standard-Workflow (Schritt für Schritt)

Gehen wir davon aus, du möchtest deinen Branch feature-xyz in den main integrieren.

Schritt 1: Zum Ziel-Branch wechseln

Du musst dich immer auf dem Branch befinden, in den hinein gemergt werden soll.

git checkout main

Schritt 2: Den Ziel-Branch aktualisieren

Stelle sicher, dass du die neuesten Änderungen vom Server hast, um Konflikte zu minimieren.

git pull origin main

Schritt 3: Den Merge ausführen

Nun holst du die Änderungen aus deinem Feature-Branch herüber:

git merge feature-xyz

3. Die zwei Arten des Merges

Git entscheidet meist automatisch, welche Methode angewendet wird:

A. Fast-Forward Merge

Passiert, wenn der main-Branch seit dem Erstellen des feature-Branchs keine neuen Commits erhalten hat. Git schiebt den Zeiger einfach nur nach vorne. Es entsteht kein extra "Merge-Commit".

B. Three-Way Merge (Recursive)

Passiert, wenn beide Branches sich seit der Trennung weiterentwickelt haben. Git erstellt automatisch einen neuen Merge-Commit, der beide Historien verbindet.


4. Hilfe! Merge-Konflikte lösen

Ein Konflikt tritt auf, wenn in beiden Branches dieselbe Zeile in derselben Datei geändert wurde. Git weiß dann nicht, welche Version die richtige ist.

So löst du einen Konflikt:

  1. Status prüfen: Git sagt dir nach dem Merge-Befehl: CONFLICT (content): Merge conflict in index.html.
  2. Datei öffnen: Öffne die betroffene Datei im Editor. Du siehst Markierungen:
    <<<<<<< HEAD
    Dies ist der Text im Main-Branch.
    =======
    Dies ist der neue Text aus dem Feature-Branch.
    >>>>>>> feature-xyz
  3. Manuell korrigieren: Lösche die Markierungen (<<<<, ====, >>>>) und entscheide dich für eine Version (oder kombiniere beide).
  4. Abschließen:
    git add index.html
    git commit -m "Fix: Merge-Konflikt gelöst"

Tipp: Wenn du völlig überfordert bist, kannst du den Merge jederzeit abbrechen:

git merge --abort

5. Best Practices

  1. Vorher aufräumen: Committe oder "stashe" alle lokalen Änderungen, bevor du einen Merge startest.
  2. Regelmäßig mergen: Merget den main zwischendurch immer mal wieder in euren feature-Branch zurück. So löst ihr kleine Konflikte sofort, statt am Ende vor einem riesigen Berg zu stehen.
  3. Pull Requests nutzen: Auf Plattformen wie GitHub oder GitLab nutzt man meist "Pull Requests". Dort kann man den Merge visuell prüfen und erst nach einem Review bestätigen.

Kurzzusammenfassung für die Konsole

git checkout main            # 1. Ziel wählen
git pull origin main         # 2. Ziel aktualisieren
git merge feature-name       # 3. Zusammenführen
# (Optional: Konflikte lösen)
git push origin main         # 4. Ergebnis hochladen

Möchtest du mehr über ein spezielles Thema wissen, z.B. den Unterschied zu "Rebase" oder wie man Merges in Visual Studio Code grafisch löst?

0