# 📝 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: ```bash mkdir konflikt-uebung cd konflikt-uebung git init ``` Kopiere die Datei [konflikt-vorlage.txt](konflikt-vorlage.txt) in den Ordner (oder erstelle sie neu): ```bash 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 ```bash git switch -c feature/version-a ``` Öffne `konflikt-vorlage.txt` und ändere Zeile 3 (`[HIER ÄNDERN]`) zu: ```text Dies ist Version A – geändert von Branch feature/version-a. ``` Committe die Änderung: ```bash git add konflikt-vorlage.txt git commit -m "feat: Version A in Zeile 3 eingetragen" ``` ### 2. Ersten Branch in main mergen (Fast-Forward) ```bash 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: ```bash git switch -c feature/version-b ``` Öffne `konflikt-vorlage.txt` und ändere dieselbe Zeile 3 zu: ```text Dies ist Version B – geändert von Branch feature/version-b. ``` Committe die Änderung: ```bash git add konflikt-vorlage.txt git commit -m "feat: Version B in Zeile 3 eingetragen" ``` ### 4. Auch main verändern (Konflikt vorbereiten) ```bash git switch main ``` Öffne `konflikt-vorlage.txt` und ändere Zeile 3 **nochmals** zu: ```text Dies ist die main-Version – direkt auf main geändert. ``` Committe: ```bash git add konflikt-vorlage.txt git commit -m "fix: Zeile 3 auf main angepasst" ``` ### 5. Konflikt provozieren Merge `feature/version-b` in `main`: ```bash 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: ```bash git add konflikt-vorlage.txt git commit -m "fix: Merge-Konflikt in konflikt-vorlage.txt aufgelöst" ``` ### 7. Ergebnis prüfen ```bash 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-b` hat einen Konflikt gemeldet - [ ] Du hast die Konfliktmarker in der Datei gesehen (`<<<<<<<`, `=======`, `>>>>>>>`) - [ ] Der Konflikt ist aufgelöst und committed - [ ] `git log --oneline --graph` zeigt einen Merge-Commit mit zwei Linien - [ ] `git status` zeigt `nothing to commit, working tree clean`