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

134 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📝 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`