chore: initial training material setup

This commit is contained in:
2026-05-12 20:34:39 +02:00
commit 2314a14916
20 changed files with 1865 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
# 📝 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`