2.8 KiB
📝 Aufgabe 04 – Merge & Konflikte
In dieser Aufgabe provozierst du absichtlich einen Merge-Konflikt und löst ihn auf. Das ist der beste Weg, um Konflikte zu verstehen – bevor sie im echten Projekt auftreten!
Ausgangssituation
Lege ein neues Repo an:
mkdir konflikt-uebung
cd konflikt-uebung
git init
Kopiere die Datei konflikt-vorlage.txt in den Ordner (oder erstelle sie neu):
cp ../04-merge-und-konflikte/konflikt-vorlage.txt .
git add konflikt-vorlage.txt
git commit -m "chore: Vorlage hinzugefügt"
Aufgabe
1. Ersten Feature-Branch anlegen
git switch -c feature/version-a
Öffne konflikt-vorlage.txt und ändere Zeile 3 ([HIER ÄNDERN]) zu:
Dies ist Version A – geändert von Branch feature/version-a.
Committe die Änderung:
git add konflikt-vorlage.txt
git commit -m "feat: Version A in Zeile 3 eingetragen"
2. Ersten Branch in main mergen (Fast-Forward)
git switch main
git merge feature/version-a
Da main sich nicht verändert hat, ist das ein Fast-Forward-Merge – kein Konflikt.
3. Zweiten Feature-Branch anlegen
Erstelle vom aktuellen Stand von main einen zweiten Branch:
git switch -c feature/version-b
Öffne konflikt-vorlage.txt und ändere dieselbe Zeile 3 zu:
Dies ist Version B – geändert von Branch feature/version-b.
Committe die Änderung:
git add konflikt-vorlage.txt
git commit -m "feat: Version B in Zeile 3 eingetragen"
4. Auch main verändern (Konflikt vorbereiten)
git switch main
Öffne konflikt-vorlage.txt und ändere Zeile 3 nochmals zu:
Dies ist die main-Version – direkt auf main geändert.
Committe:
git add konflikt-vorlage.txt
git commit -m "fix: Zeile 3 auf main angepasst"
5. Konflikt provozieren
Merge feature/version-b in main:
git merge feature/version-b
Git meldet einen Konflikt. Öffne konflikt-vorlage.txt und schau dir die Konfliktmarker an.
6. Konflikt auflösen
Entscheide dich für eine Version (oder kombiniere beide) und entferne alle Konfliktmarker. Dann:
git add konflikt-vorlage.txt
git commit -m "fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst"
7. Ergebnis prüfen
git log --oneline --graph
Du solltest einen Merge-Commit mit zwei Eltern-Commits sehen.
✅ Erfolgskriterien
- Der Fast-Forward-Merge (Schritt 2) hat keinen Merge-Commit erstellt
git merge feature/version-bhat einen Konflikt gemeldet- Du hast die Konfliktmarker in der Datei gesehen (
<<<<<<<,=======,>>>>>>>) - Der Konflikt ist aufgelöst und committed
git log --oneline --graphzeigt einen Merge-Commit mit zwei Liniengit statuszeigtnothing to commit, working tree clean