Files
Git-Schulung/trainerhandbuch.md

166 lines
5.1 KiB
Markdown
Raw Permalink 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.
# 📖 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.