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
+130
View File
@@ -0,0 +1,130 @@
# 🌿 Modul 03 Branches
Branches sind das Herzstück von Git. Sie ermöglichen es dir, an neuen Features zu arbeiten, ohne den stabilen Hauptcode zu verändern.
---
## Was ist ein Branch?
Ein Branch ist ein **beweglicher Zeiger** auf einen Commit. Wenn du auf einem Branch einen neuen Commit machst, rückt der Zeiger automatisch vorwärts.
Das klingt abstrakt stell dir vor:
- `main` ist dein **veröffentlichter Stand** (funktioniert immer)
- Du erstellst einen Branch `feature/begruessung` für neue Arbeit
- Dort probierst du aus, änderst, brichst ab `main` bleibt unberührt
- Wenn du fertig bist, **mergst** du den Feature-Branch zurück in `main`
---
## Branch-Workflow visualisiert
```mermaid
gitGraph
commit id: "Projekt start"
commit id: "README fertig"
branch feature/begruessung
checkout feature/begruessung
commit id: "hallo.txt angelegt"
commit id: "Begrüßung verbessert"
checkout main
merge feature/begruessung id: "Feature gemergt"
```
Auf `main` hat sich nichts verändert, solange du auf `feature/begruessung` gearbeitet hast. Erst beim Merge kommen die Änderungen zusammen.
---
## Befehle im Überblick
### Branch anlegen und wechseln
```bash
git branch feature/begruessung
git switch feature/begruessung
```
Oder in einem Schritt:
```bash
git switch -c feature/begruessung
```
### Aktuellen Branch anzeigen
```bash
git branch
```
```text
* feature/begruessung
main
```
Das Sternchen `*` zeigt, auf welchem Branch du gerade bist.
### Alle Branches anzeigen (auch remote)
```bash
git branch -a
```
### Zurück zu main wechseln
```bash
git switch main
```
### Branch mergen
```bash
git switch main
git merge feature/begruessung
```
```text
Updating a3f9c12..d4e5f67
Fast-forward
hallo.txt | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 hallo.txt
```
### Branch löschen (nach dem Merge)
```bash
git branch -d feature/begruessung
```
---
## Unterschied sehen
Bevor du mergst, kannst du sehen, was sich auf dem Feature-Branch geändert hat:
```bash
git diff main..feature/begruessung
```
Oder alle Branches in der Übersicht:
```bash
git log --all --oneline --graph
```
```text
* d4e5f67 (feature/begruessung) Begrüßung verbessert
* c3d4e56 hallo.txt angelegt
* b7e2f45 (HEAD -> main) README fertig
* a3f9c12 Projekt start
```
---
## 📝 Jetzt bist du dran!
Weiter zur [Aufgabe](aufgabe.md).
---
**Weiter geht's mit:** [04 Merge & Konflikte](../04-merge-und-konflikte/README.md)
+85
View File
@@ -0,0 +1,85 @@
# 📝 Aufgabe 03 Branches
Arbeite die folgenden Schritte durch. Schau erst in die [Lösung](../loesungen/03-loesung.md), wenn du nicht weiterkommst.
---
## Aufgabe
### 1. Ausgangssituation
Nimm das Repo aus Aufgabe 02 (`meine-notizen`) oder lege ein frisches Repo an:
```bash
mkdir branch-uebung
cd branch-uebung
git init
echo "# Branch-Übung" > README.md
git add README.md
git commit -m "chore: Projekt angelegt"
```
### 2. Feature-Branch anlegen
Erstelle einen neuen Branch namens `feature/begruessung` und wechsle direkt dorthin:
```bash
git switch -c feature/begruessung
```
### 3. Neue Datei auf dem Feature-Branch
Erstelle eine Datei `hallo.txt` mit folgendem Inhalt:
```text
Hallo, Welt!
Willkommen in meinem ersten Git-Projekt.
```
Füge die Datei hinzu und committe sie.
### 4. Zurück zu main
Wechsle zurück zu `main`:
```bash
git switch main
```
Schau dir den Ordner an `hallo.txt` ist **nicht da**! Das ist korrekt: auf `main` existiert sie noch nicht.
### 5. Unterschied sehen
Zeige die Commit-Historie beider Branches:
```bash
git log --all --oneline --graph
```
### 6. Feature-Branch mergen
Merge `feature/begruessung` in `main`:
```bash
git merge feature/begruessung
```
Jetzt ist `hallo.txt` auch auf `main` vorhanden.
### 7. Branch aufräumen
Lösche den Feature-Branch, da er nicht mehr gebraucht wird:
```bash
git branch -d feature/begruessung
```
---
## ✅ Erfolgskriterien
- [ ] `git switch -c feature/begruessung` hat einen neuen Branch erstellt
- [ ] `hallo.txt` existiert auf `feature/begruessung`, aber **nicht** auf `main` (vor dem Merge)
- [ ] `git log --all --oneline --graph` zeigt beide Branches
- [ ] Nach dem Merge ist `hallo.txt` auf `main` vorhanden
- [ ] `git branch` zeigt nur noch `main` (nach dem Löschen)