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
+158
View File
@@ -0,0 +1,158 @@
# ✅ 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)*