Files
Git-Schulung/04-merge-und-konflikte/README.md
T

2.8 KiB
Raw Blame History

⚡ Modul 04 – Merge & Konflikte

Beim Mergen bringt Git Änderungen aus verschiedenen Branches zusammen. Das klappt meistens automatisch – aber manchmal muss du eingreifen.


Fast-Forward-Merge

Ein Fast-Forward-Merge ist der einfachste Fall: main hat sich nicht verändert, während du auf deinem Feature-Branch gearbeitet hast. Git „spult" main einfach vorwärts.

gitGraph
    commit id: "A"
    commit id: "B"
    branch feature/schnell
    checkout feature/schnell
    commit id: "C"
    commit id: "D"
    checkout main
    merge feature/schnell id: "Fast-Forward"

Kein echter Merge-Commit entsteht – main zeigt einfach auf D.


3-Way-Merge

Ein 3-Way-Merge passiert, wenn beide Branches seit dem letzten gemeinsamen Commit neue Commits haben. Git vergleicht den gemeinsamen Vorfahren mit beiden Spitzen und kombiniert die Änderungen.

gitGraph
    commit id: "Basis"
    commit id: "A"
    branch feature/konflikt
    checkout feature/konflikt
    commit id: "F1 – auf feature"
    checkout main
    commit id: "M1 – auf main"
    merge feature/konflikt id: "Merge Commit"

Git erstellt dabei einen Merge-Commit mit zwei Eltern-Commits.


Wenn ein Konflikt entsteht

Ein Konflikt tritt auf, wenn beide Branches dieselbe Zeile einer Datei unterschiedlich geändert haben. Git weiß nicht, welche Version "richtig" ist – du musst entscheiden.

git merge feature/konflikt
Auto-merging konflikt-vorlage.txt
CONFLICT (content): Merge conflict in konflikt-vorlage.txt
Automatic merge failed; fix conflicts and then commit the result.

Konfliktmarker verstehen

Git markiert den betroffenen Bereich in der Datei so:

<<<<<<< HEAD
Diese Zeile stammt vom main-Branch.
=======
Diese Zeile stammt vom feature-Branch.
>>>>>>> feature/konflikt
Marker Bedeutung
<<<<<<< HEAD Beginn des Konfliktbereichs – deine aktuelle Version (main)
======= Trennlinie zwischen den beiden Versionen
>>>>>>> feature/konflikt Ende des Konfliktbereichs – die eingehende Version

Konflikt auflösen

  1. Öffne die Datei in einem Texteditor
  2. Entscheide, welche Version du behalten willst (oder kombiniere beide)
  3. Entferne alle Konfliktmarker (<<<<<<<, =======, >>>>>>>)
  4. Stage die Datei und committe:
git add konflikt-vorlage.txt
git commit -m "fix: Merge-Konflikt aufgelöst"

Notausgang: Merge abbrechen

Wenn du den Überblick verlierst und von vorn anfangen willst:

git merge --abort

Das setzt alles auf den Zustand vor dem Merge-Versuch zurück.


📝 Jetzt bist du dran!

Weiter zur Aufgabe.


Weiter geht's mit: 05 – Remote & Pull Requests