Git wirklich verstehen & sicher nutzen
Von „Was ist das & wozu" über das mentale Modell und die tägliche Praxis bis zum eigenen Git-Server im Container — durchgängig im integrierten Terminal deiner IDE (VS Code, Cursor, Antigravity), unterstützt von Claude Code. In 9 Stufen.
Worum geht's?
Git ist das Versionskontrollsystem, das festhält, wer was wann warum geändert hat — und dir erlaubt, jederzeit zurückzugehen. Du lernst hier nicht nur Befehle, sondern das mentale Modell dahinter, die typischen Rettungs-Rezepte und die Plattform-Landschaft bis zum Self-Hosting.
Git ist IDE-unabhängig: Wir zeigen es im integrierten Terminal — das funktioniert in VS Code genauso wie in Cursor oder Antigravity. Die Befehle und Konzepte sind überall identisch; nur die Oberfläche drumherum sieht etwas anders aus.
Dieses Portal ist beides: Live-Präsentation für den Workshop und Selbstlern-Kurs zum Durchklicken. Dein Fortschritt wird lokal gespeichert.
? Für wen ist Git wichtig?
Längst nicht nur für Entwickler:innen — überall, wo Dateien über die Zeit verändert werden.
🧠 Das mentale Modell in einem Bild
Git ist kein Backup-Knopf, sondern eine Kette von Schnappschüssen (Commits). Jeder zeigt auf seinen Vorgänger.
Jeder Punkt = ein Commit (ein gespeicherter Stand mit Nachricht). Ein Branch ist nur ein Zeiger auf einen dieser Punkte — Verzweigen und Zusammenführen lernst du in Stufe 3 und 5.
🛟 Git & KI gehören zusammen
🗺️ Die 9 Stufen
Was ist Git & wozu?
Warum „Datei-Kopien mit Datum im Namen" nicht skalieren — und was Git stattdessen tut.
1 Das Chaos ohne Versionskontrolle
Jeder kennt es: Dateien werden kopiert, umbenannt, gemailt. Niemand weiß mehr, welche die aktuelle ist.
angebot.docxangebot_final.docxangebot_final_v2.docxangebot_final_WIRKLICH.docx- Wer hat was geändert? Unklar.
- Eine Datei, viele Versionen im Verlauf
- Jede Änderung mit Autor, Zeit & Warum
- Jederzeit zu einem alten Stand zurück
- Mehrere Leute parallel, ohne sich zu überschreiben
2 Git in einem Satz
„Verteilt" heißt: Du hast die ganze Geschichte auf deinem Rechner und kannst auch offline committen. Ein Server (GitHub, Forgejo …) ist nur ein gemeinsamer Treffpunkt zum Austauschen — kein Single Point of Failure.
3 Was du davon hast
✓ Geschafft, wenn du …
Eine kurze Geschichte
Woher Git kommt — und warum das erklärt, wie es heute funktioniert.
1 Der Zeitstrahl
Git entstand aus einem echten Konflikt im Linux-Kernel-Projekt. Das prägt bis heute sein „verteiltes" Wesen.
2 Warum „verteilt" der Kern ist
✓ Geschafft, wenn du …
Das mentale Modell
Wenn du diese drei Bereiche und die Zeiger verstehst, ergibt der Rest sich fast von selbst.
1 Die drei Bereiche
Eine Änderung wandert in zwei Schritten in die Historie. Klick dich durch.
Working Dir
Staging
git addRepository
git commitDie Staging Area ist Gits Besonderheit: Du entscheidest bewusst, was in den nächsten Commit kommt — nicht zwangsläufig alles, was du geändert hast.
2 Commits, Hashes & HEAD
- Commit — ein gespeicherter Schnappschuss mit Nachricht, Autor, Zeit.
- Hash — die eindeutige ID eines Commits (z. B.
a1b2c3d). Ändert sich der Inhalt, ändert sich der Hash → Manipulation fällt auf. - HEAD — ein Zeiger auf „wo du gerade stehst" (meist die Spitze deines Branches).
- Branch — nur ein beweglicher Zeiger auf einen Commit. Neuer Branch = neues Etikett, kein Kopieren von Dateien.
3 Branches sind billig
Verzweigen heißt: ein zweiter Zeiger läuft eigene Wege und wird später wieder zusammengeführt.
feature zweigt bei c2 ab. Später wird er nach main gemerged (Stufe 5).
✓ Geschafft, wenn du …
Tägliche Praxis
Die Handvoll Befehle, die 90 % des Alltags abdecken — im integrierten Terminal deiner IDE.
1 Vom leeren Ordner zum ersten Commit
git init— macht den Ordner zum Repository.git add <datei>— merkt Änderungen fürs nächste Commit vor (Staging).git commit -m "…"— speichert den Schnappschuss mit Nachricht.git status/git log/git diff— Stand, Verlauf, Unterschiede.
2 .gitignore — was nicht ins Repo gehört
# Abhängigkeiten & Build node_modules/ dist/ # Geheimnisse & lokale Konfig .env *.key
3 Branch, Merge, Remote
git switch -c feature # neuen Branch anlegen & hinwechseln git merge feature # Branch in den aktuellen zusammenführen git push # Commits zum Server schicken git pull # Commits vom Server holen & einbauen git fetch # nur holen, noch nicht einbauen
4 Claude Code hilft beim Committen
Im integrierten Terminal deiner IDE musst du Befehle nicht auswendig können — beschreibe, was du willst.
Schau dir meine Änderungen an und committe sie mit einer aussagekräftigen Nachricht.
Ich sehe Änderungen an app.js (Filter case-insensitive). Vorschlag: fix: Suche unabhängig von Groß-/Kleinschreibung. Soll ich git add + git commit ausführen?
✓ Geschafft, wenn du …
Zusammenarbeit
Feature-Branches, Pull Requests, das ewige Merge-vs-Rebase und das Lösen von Konflikten.
1 Der Feature-Branch-Workflow
- Für jede Aufgabe einen eigenen Branch:
git switch -c feature/login. - Dort committen, bis das Feature fertig ist.
- Branch pushen und einen Pull Request (Merge Request) öffnen.
- Review → mergen → Branch löschen.
main übernehmen", inklusive Diff, Diskussion und Review — das Herzstück der Team-Arbeit.2 Merge vs. Rebase
Zwei Wege, einen Branch auf den Stand von main zu bringen. Beide gültig — mit unterschiedlichem Ergebnis im Verlauf.
- Erzeugt einen Merge-Commit
- Historie bleibt wie sie war (ehrlich, verzweigt)
- Sicher für geteilte Branches
- Setzt Commits neu auf die Spitze von main
- Ergibt eine lineare, aufgeräumte Historie
- Regel: nie bereits gepushte/geteilte Commits rebasen
Sieh dir den Unterschied im Verlauf an:
3 Konflikte lösen — mit Claude Code
Ein Konflikt entsteht, wenn zwei Seiten dieselbe Zeile unterschiedlich geändert haben. Git markiert die Stelle, du entscheidest.
Erkläre mir den Merge-Konflikt in app.js und schlage eine Auflösung vor, die beide Änderungen behält.
Beide Seiten ändern die Funktion login(): main fügt ein Log hinzu, dein Branch die Validierung. Vorschlag: beides kombinieren. Soll ich die Konfliktmarker auflösen und committen?
4 Tags & Releases
git tag v1.0.0 markiert einen Stand als Version. Plattformen machen daraus „Releases" mit Download & Changelog.✓ Geschafft, wenn du …
Rettung & Fortgeschrittenes
„Mist — rückgängig!" Für fast jede Situation gibt es ein passendes Rezept.
1 Das richtige Undo wählen
Wähle dein Szenario — Git hat für jedes ein eigenes Werkzeug.
2 Detektivarbeit: blame & bisect
git blame <datei>— zeigt zeilenweise, wer was wann geändert hat.git bisect— findet per binärer Suche den Commit, der einen Bug eingeführt hat.
3 Secrets aus der Historie entfernen (DSGVO)
git filter-repo) und das Secret sofort widerrufen/neu erstellt werden — denn es war öffentlich. Danach Historie neu pushen (force) und Team informieren.✓ Geschafft, wenn du …
Die Hosting-Landschaft
Git läuft lokal — geteilt wird über eine Plattform. Welche passt zu dir?
1 Die großen Anbieter
2 Self-Hosting: Gitea vs. Forgejo
Beide sind leichtgewichtige, self-hostbare Git-Server (ein Binary, wenig Ressourcen). Forgejo ist 2022 als Community-Fork aus Gitea entstanden.
- Ausgereift, große Verbreitung
- Hinter einer Firma (Gitea Ltd.)
- Sehr feature-reich
- Community-/Non-Profit-getrieben (Codeberg e. V.)
- Fork aus Gitea — vertraute Bedienung
- Fokus auf Unabhängigkeit & Governance
3 So sieht eine self-hostbare Oberfläche aus
✓ Geschafft, wenn du …
Self-Hosting: Forgejo im Container
Dein eigener Git-Server auf dem VPS — mit Docker und Caddy, in wenigen Schritten.
1 Die docker-compose.yml
services: forgejo: image: codeberg.org/forgejo/forgejo:latest container_name: forgejo restart: always environment: [ "USER_UID=1000", "USER_GID=1000" ] volumes: [ "./forgejo-data:/data" ] # Persistenz: alle Repos ports: [ "3000:3000", "2222:22" ] # Web-UI + Git-SSH
./forgejo-data ist entscheidend: Es hält alle Repos und Einstellungen über Container-Neustarts hinweg. (Gitea: image: gitea/gitea:latest.)2 Caddy als Reverse Proxy (HTTPS automatisch)
git.deinedomain.de {
reverse_proxy localhost:3000
}
git.deinedomain.de → deine Server-IP.3 Starten & erstes Repo pushen
4 Backup nicht vergessen
forgejo-data/ sichern (z. B. per Cron + restic/rsync). Damit liegt deine komplette Git-Plattform in einem Ordner.✓ Geschafft, wenn du …
Git & Claude Code
Der Kreis schließt sich: Git ist das Sicherheitsnetz, das KI-Arbeit erst sorgenfrei macht.
1 Warum gerade bei KI-Änderungen
2 Diffs reviewen lassen
Zeig mir den Diff der letzten Änderungen und erkläre kurz, was sich fachlich ändert. Ist etwas riskant?
3 Dateien geändert. Kernpunkt: die Preisberechnung rundet jetzt kaufmännisch. Achtung: config.json enthält einen API-Key — den solltest du entfernen und in .env auslagern.
3 Der sichere Rhythmus
- Kleine Aufgabe an Claude Code geben.
- Diff lesen — verstehst du jede Änderung?
- Committen (eine sinnvolle Nachricht pro Schritt).
- Lief etwas schief?
git restore/git revert— kein Drama.
✓ Geschafft, wenn du …
Git-Cheat-Sheet
Die wichtigsten Befehle zum Mitnehmen. (Zählt nicht für den Fortschritt.)
▶ Alltag
git statusgit add -pgit commit -mgit log --onelinegit switch -c xgit pull --rebase🛟 Rettung
git restore <f>git reset --soft HEAD~1git revert <hash>git stashgit refloggit cherry-pick★ Gute Gewohnheiten
- Kleine, thematisch klare Commits — eine Sache pro Commit.
- Aussagekräftige Nachrichten (Claude Code hilft dabei).
- Niemals Secrets committen;
.gitignorefrüh pflegen. - Vor dem Push: Diff lesen. Nach dem Bauen mit KI: Diff lesen.
Quiz
10 Fragen quer durch die Stufen. Ab 8 richtigen Antworten schaltest du dein Zertifikat frei.
Dein Zertifikat
Glückwunsch! Trage deinen Namen ein und drucke das Zertifikat (oder speichere als PDF).