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
+165
View File
@@ -0,0 +1,165 @@
# 📖 Trainerhandbuch
Dieses Dokument richtet sich an Personen, die diese Git-Schulung durchführen. Es enthält Hinweise zur Vorbereitung, typische Stolpersteine und Vorschläge für Diskussionen.
---
## Vorbereitung vor der Schulung
### Checkliste (30 Minuten vorher)
- [ ] Repo geklont oder frisch aufgesetzt: `git clone <url> git-schulung`
- [ ] Eigene Git-Konfiguration geprüft: `git config --list`
- [ ] Test-Remote-Repository angelegt (leer, für Modul 05)
- [ ] Terminal / Git Bash geöffnet und getestet
- [ ] Projektor / Bildschirmübertragung eingerichtet
- [ ] Alle Teilnehmenden haben Git installiert (Modul 00 vorab schicken)
- [ ] Backup-Plan: USB-Stick mit Git-Installer für alle gängigen Betriebssysteme
### Empfohlene Werkzeuge am Rechner des Trainers
- Git (aktuell)
- VS Code mit GitLens-Extension (gute Visualisierung)
- Browser mit GitHub/GitLab Account
---
## Zeitplan und Pausen
| Modul | Dauer | Pause danach |
|-------|-------|-------------|
| 00 Vorbereitung | 10 min | |
| 01 Grundkonzepte | 15 min | **5 min Pause** |
| 02 Erste Schritte | 15 min | |
| 03 Branches | 15 min | **10 min Pause** |
| 04 Konflikte | 15 min | |
| 05 Remote & PRs | 10 min | |
| 06 Cheatsheet + Q&A | 10 min | Ende |
**Gesamt:** ca. 90 Minuten mit Pausen, 70 Minuten ohne.
---
## Typische Stolpersteine bei Anfängern
### 1. Detached HEAD
**Was passiert:** Jemand hat direkt einen alten Commit mit `git checkout <hash>` ausgecheckt.
**Was Git sagt:**
```text
HEAD detached at a3f9c12
```
**Lösung:**
```bash
git switch main
```
**Erklärung für Teilnehmende:** "HEAD" ist wie ein Lesezeichen. Normalerweise zeigt es auf einen Branch-Namen (wie `main`). Im "Detached HEAD"-Zustand zeigt es direkt auf einen Commit kein Branch wird bewegt. Mit `git switch main` befestigst du das Lesezeichen wieder am richtigen Branch.
---
### 2. Falscher Branch
**Was passiert:** Jemand macht einen Commit auf `main`, obwohl er auf einem Feature-Branch sein wollte.
**Lösung (wenn noch nicht gepusht):**
```bash
git switch -c feature/mein-feature # Branch erstellen (nimmt den Commit mit)
git switch main
git reset --hard HEAD~1 # Commit von main entfernen
```
**Einfachere Lösung:** `git cherry-pick` erwähnen als Hinweis, nicht als Pflicht.
---
### 3. Commit-Nachricht vergessen / schlecht
**Was passiert:** `git commit` ohne `-m` öffnet den Editor. Viele Anfänger wissen nicht, wie sie ihn schließen.
**Nano:** `Ctrl+O`, Enter, `Ctrl+X`
**Vim:** `i` zum Editieren, `Esc`, dann `:wq` und Enter
**Empfehlung:** Immer `-m "..."` verwenden, bis der Workflow sitzt.
---
### 4. Tippfehler in Branch-Namen
**Was passiert:** `git switch feautre/login` → Fehler.
**Lösung:**
```bash
git branch -m feautre/login feature/login # Branch umbenennen
```
---
### 5. Staging Area vergessen
**Was passiert:** Jemand ruft `git commit -m "..."` auf, obwohl nichts gestagtet ist.
**Git sagt:**
```text
nothing to commit, working tree clean
```
**Erinnerung:** Immer `git status` vor `git commit` schauen!
---
### 6. Merge-Konflikt-Panik
**Was passiert:** Jemand sieht Konfliktmarker zum ersten Mal und weiß nicht, was zu tun ist.
**Tipp:** Ruhig bleiben. `git merge --abort` als Notausgang zeigen. Erklären, dass der Konflikt nur in der Datei ist nichts ist kaputt.
---
## Diskussionsfragen pro Modul
### Nach Modul 01
- "Warum macht eine Staging Area Sinn? Wann würdet ihr nicht alle Änderungen in einen Commit packen?"
### Nach Modul 02
- "Wie oft sollte man committen? Nach jeder Zeile? Nach jedem Feature?"
- "Was ist eine gute Commit-Nachricht? Zeigt ein Beispiel aus eurem Alltag."
### Nach Modul 03
- "Wann würdet ihr einen Branch anlegen? Immer? Nur bei größeren Features?"
- "Was ist der Unterschied zwischen Branch und Fork?"
### Nach Modul 04
- "Was passiert, wenn zwei Leute gleichzeitig dieselbe Datei ändern wer 'gewinnt'?"
- "Könnt ihr euch einen Fall vorstellen, wo ein Fast-Forward unerwünscht wäre?"
### Nach Modul 05
- "Was ist der Vorteil eines Pull Requests gegenüber direktem Push auf main?"
- "Wer sollte einen PR reviewen? Wie lange darf ein PR offen bleiben?"
---
## Repo für die nächste Schulung frisch machen
Führe das Reset-Skript aus:
```bash
bash reset-uebung.sh
```
Das Skript entfernt alle Übungsordner, die Teilnehmende angelegt haben, und stellt sicher, dass das Schulungs-Repo sauber ist. Lies das Skript vorher kurz durch, um sicherzugehen, dass es in deiner Umgebung korrekt funktioniert.
---
## Häufige Fragen (FAQ)
**Frage:** "Kann ich Git auch ohne GitHub nutzen?"
**Antwort:** Ja! Git ist lokal. GitHub ist nur eine Hosting-Plattform. Du brauchst GitHub erst für Remote-Repos und Zusammenarbeit.
**Frage:** "Was ist der Unterschied zwischen Git und GitHub?"
**Antwort:** Git ist das Werkzeug (lokal installiert). GitHub ist ein Dienst im Internet, der Git-Repos hostet und zusätzliche Funktionen (PRs, Issues, Actions) bietet.
**Frage:** "Was ist ein 'origin'?"
**Antwort:** Ein Kurzname für das Remote-Repo per Konvention heißt das erste Remote immer `origin`. Du könntest es auch `meinserver` nennen.