# ✅ Lösung – Aufgabe 04: Merge & Konflikte > Schau dir diese Lösung erst an, nachdem du die Aufgabe selbst versucht hast! --- ## Schritt-für-Schritt-Lösung ### 1. Ausgangssituation ```bash mkdir konflikt-uebung cd konflikt-uebung git init cp ../04-merge-und-konflikte/konflikt-vorlage.txt . git add konflikt-vorlage.txt git commit -m "chore: Vorlage hinzugefügt" ``` ### 2. Ersten Feature-Branch erstellen und ändern ```bash git switch -c feature/version-a ``` Öffne `konflikt-vorlage.txt` und ändere Zeile 3 zu: ```text Zeile 3: Dies ist Version A – geändert von Branch feature/version-a. ``` ```bash git add konflikt-vorlage.txt git commit -m "feat: Version A in Zeile 3 eingetragen" ``` ### 3. Fast-Forward-Merge ```bash git switch main git merge feature/version-a ``` ```text Updating a1b2c3d..b2c3d4e Fast-forward konflikt-vorlage.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) ``` Kein Merge-Commit! `main` wurde einfach vorgespult. ### 4. Zweiten Feature-Branch erstellen ```bash git switch -c feature/version-b ``` Öffne `konflikt-vorlage.txt` und ändere Zeile 3 zu: ```text Zeile 3: Dies ist Version B – geändert von Branch feature/version-b. ``` ```bash git add konflikt-vorlage.txt git commit -m "feat: Version B in Zeile 3 eingetragen" ``` ### 5. main auch ändern (Konflikt vorbereiten) ```bash git switch main ``` Öffne `konflikt-vorlage.txt` und ändere Zeile 3 zu: ```text Zeile 3: Dies ist die main-Version – direkt auf main geändert. ``` ```bash git add konflikt-vorlage.txt git commit -m "fix: Zeile 3 auf main angepasst" ``` ### 6. Konflikt provozieren ```bash git merge feature/version-b ``` ```text Auto-merging konflikt-vorlage.txt CONFLICT (content): Merge conflict in konflikt-vorlage.txt Automatic merge failed; fix conflicts and then commit the result. ``` ### 7. Konflikt ansehen Öffne `konflikt-vorlage.txt`. Du siehst: ```text Zeile 1: Diese Zeile wird nicht verändert. Zeile 2: Diese Zeile wird auch nicht verändert. <<<<<<< HEAD Zeile 3: Dies ist die main-Version – direkt auf main geändert. ======= Zeile 3: Dies ist Version B – geändert von Branch feature/version-b. >>>>>>> feature/version-b Zeile 4: Diese Zeile bleibt wieder gleich. Zeile 5: Ende der Vorlage. ``` ### 8. Konflikt auflösen Entscheide dich für eine Lösung – zum Beispiel eine Kombination: ```text Zeile 1: Diese Zeile wird nicht verändert. Zeile 2: Diese Zeile wird auch nicht verändert. Zeile 3: Finale Version – kombiniert aus main und feature/version-b. Zeile 4: Diese Zeile bleibt wieder gleich. Zeile 5: Ende der Vorlage. ``` Alle Konfliktmarker entfernen, dann: ```bash git add konflikt-vorlage.txt git commit -m "fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst" ``` ```text [main f6g7h8i] fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst ``` ### 9. Abschlusszustand ```bash git log --oneline --graph ``` ```text * f6g7h8i (HEAD -> main) fix: Merge-Konflikt aufgelöst |\ | * e5f6g7h (feature/version-b) feat: Version B in Zeile 3 eingetragen * | d4e5f6g fix: Zeile 3 auf main angepasst |/ * b2c3d4e feat: Version A in Zeile 3 eingetragen * a1b2c3d chore: Vorlage hinzugefügt ``` Der Merge-Commit `f6g7h8i` hat zwei Eltern-Commits (`d4e5f6g` und `e5f6g7h`). --- *Zurück zur [Aufgabe](../04-merge-und-konflikte/aufgabe.md)*