Git & GitHub – Ultra-Schnellstart Cheat Sheet 🚀
Dieses Cheat Sheet gibt dir alle wichtigen Befehle und Konzepte auf einen Blick, damit du sofort mit Git und GitHub loslegen kannst. Es ist als Nachschlagewerk gedacht – wenn du die Hintergründe verstehen willst, schau in die ausführlichen Kapitel deines Kurses.
Die drei Bereiche von Git verstehen
Bevor du mit den Befehlen loslegst, solltest du das grundlegende Konzept verinnerlichen:
flowchart LR
WD["🗂️ Working Directory\nDein Arbeitsordner"] -->|git add| SA["📋 Staging Area\nVorbereitungsbereich"]
SA -->|git commit| REPO["📦 Repository\nVersionshistorie"]
REPO -->|git push| REMOTE["☁️ Remote\nz.B. GitHub"]
REMOTE -->|git pull| WD
| Bereich | Beschreibung |
|---|---|
| Working Directory | Dein aktueller Projektordner mit allen Dateien, an denen du arbeitest |
| Staging Area | Der „Vorbereitungsraum" – hier sammelst du Änderungen für den nächsten Commit |
| Repository | Die lokale Datenbank mit der kompletten Versionshistorie |
| Remote | Ein entferntes Repository (z.B. auf GitHub), um Code zu teilen oder zu sichern |
Ersteinrichtung
Diese Befehle führst du einmalig nach der Git-Installation aus:
# Deinen Namen setzen (erscheint in jedem Commit)
git config --global user.name "Dein Name"
# Deine E-Mail setzen (sollte mit GitHub übereinstimmen)
git config --global user.email "deine@email.de"
# Standardbranch auf "main" setzen (moderne Konvention)
git config --global init.defaultBranch main
# Konfiguration überprüfen
git config --list
💡 Tipp: Die
--global-Option setzt die Einstellung für alle Repositories auf deinem Computer. Ohne diese Option gilt sie nur für das aktuelle Projekt.
Repository erstellen und klonen
| Aktion | Befehl |
|---|---|
| Neues Repository im aktuellen Ordner erstellen | git init |
| Bestehendes Repository von GitHub klonen | git clone https://github.com/user/repo.git |
| Repository mit eigenem Ordnernamen klonen | git clone https://github.com/user/repo.git mein-ordner |
Der tägliche Workflow
Dies sind die Befehle, die du am häufigsten verwenden wirst:
Status und Änderungen prüfen
# Aktuellen Status anzeigen (welche Dateien geändert, gestaged, etc.)
git status
# Kurzversion des Status
git status -s
# Änderungen im Working Directory anzeigen (noch nicht gestaged)
git diff
# Änderungen in der Staging Area anzeigen (bereit für Commit)
git diff --staged
Dateien stagen und committen
# Einzelne Datei zur Staging Area hinzufügen
git add dateiname.php
# Mehrere Dateien hinzufügen
git add datei1.php datei2.php ordner/
# ALLE geänderten und neuen Dateien hinzufügen
git add .
# Commit erstellen mit Nachricht
git commit -m "Kurze, aussagekräftige Beschreibung"
# Staging und Commit in einem Schritt (nur für bereits getrackte Dateien!)
git commit -am "Beschreibung"
Letzten Commit korrigieren
# Nachricht des letzten Commits ändern
git commit --amend -m "Neue, korrigierte Nachricht"
# Vergessene Dateien zum letzten Commit hinzufügen
git add vergessene-datei.php
git commit --amend --no-edit
⚠️ Wichtig: Verwende
--amendnur für Commits, die du noch nicht gepusht hast! Andernfalls überschreibst du die Historie, die andere bereits haben könnten.
Mit GitHub arbeiten
Remote-Verbindung einrichten
# Remote-Repository hinzufügen (einmalig nach git init)
git remote add origin https://github.com/dein-user/dein-repo.git
# Alle konfigurierten Remotes anzeigen
git remote -v
# Remote-URL ändern
git remote set-url origin https://github.com/user/neues-repo.git
Push und Pull
# Lokale Commits zum Remote-Repository hochladen
git push origin main
# Beim ersten Push den Upstream-Branch setzen (danach reicht "git push")
git push -u origin main
# Änderungen vom Remote-Repository holen und mergen
git pull origin main
# Nur Informationen holen, ohne zu mergen
git fetch origin
Branches – parallele Entwicklungslinien
Branches sind eines der mächtigsten Features von Git. Nutze sie, um Features zu entwickeln, ohne den Hauptcode zu gefährden.
Branch-Übersicht
# Alle lokalen Branches anzeigen (aktueller Branch mit * markiert)
git branch
# Alle Branches inkl. Remote-Branches anzeigen
git branch -a
# Neuen Branch erstellen
git branch feature-name
# Branch erstellen UND direkt wechseln
git checkout -b feature-name
# oder moderner:
git switch -c feature-name
Zwischen Branches wechseln
# Zu bestehendem Branch wechseln
git checkout feature-name
# oder moderner:
git switch feature-name
# Zurück zum main-Branch
git switch main
Branches zusammenführen und löschen
# Zuerst in den Zielbranch wechseln (z.B. main)
git switch main
# Anderen Branch in aktuellen Branch mergen
git merge feature-name
# Branch löschen (nach erfolgreichem Merge)
git branch -d feature-name
# Branch löschen (erzwingen, auch wenn nicht gemergt)
git branch -D feature-name
# Remote-Branch löschen
git push origin --delete feature-name
Historie und Logs
# Commit-Historie anzeigen
git log
# Kompakte einzeilige Darstellung
git log --oneline
# Mit grafischer Branch-Darstellung
git log --oneline --graph --all
# Die letzten n Commits anzeigen
git log -5
# Historie einer bestimmten Datei
git log -- dateiname.php
# Wer hat welche Zeile geschrieben?
git blame dateiname.php
Änderungen rückgängig machen
| Situation | Befehl |
|---|---|
| Änderungen im Working Directory verwerfen (Datei auf letzten Commit zurücksetzen) | git checkout -- datei.php oder git restore datei.php |
| Datei aus Staging Area entfernen (aber Änderungen behalten) | git reset HEAD datei.php oder git restore --staged datei.php |
| Letzten Commit rückgängig machen (Änderungen bleiben im Working Directory) | git reset --soft HEAD~1 |
| Letzten Commit komplett verwerfen (Änderungen werden gelöscht!) | git reset --hard HEAD~1 |
| Einen früheren Commit „umkehren" (neuer Commit, der Änderungen rückgängig macht) | git revert <commit-hash> |
⚠️ Vorsicht mit
--hard! Dieser Befehl löscht Änderungen unwiderruflich. Nutze ihn nur, wenn du dir sicher bist.
Die .gitignore-Datei
Erstelle im Projektroot eine Datei namens .gitignore, um bestimmte Dateien vom Tracking auszuschließen:
# Abhängigkeiten (werden mit Composer/npm installiert)
/vendor/
/node_modules/
# IDE-Einstellungen
/.idea/
/.vscode/
# Umgebungsvariablen und Secrets
.env
.env.local
*.log
# Betriebssystem-Dateien
.DS_Store
Thumbs.db
# Kompilierte/generierte Dateien
/dist/
/build/
*.cache
💡 Tipp: Füge die
.gitignorefrüh zu deinem Projekt hinzu – am besten direkt nachgit init. Bereits getrackte Dateien werden nicht automatisch ignoriert.
Gute Commit-Nachrichten schreiben
Eine gute Commit-Nachricht folgt diesem Muster:
<Typ>: <Was wurde geändert> (kurz, im Imperativ)
[Optional: Ausführlichere Beschreibung nach einer Leerzeile]
Beispiele für gute Nachrichten:
| ✅ Gut | ❌ Schlecht |
|---|---|
feat: Kontaktformular mit Validierung hinzugefügt |
update |
fix: Null-Pointer-Exception bei leerem Warenkorb behoben |
bug gefixt |
refactor: Datenbankabfragen in eigene Klasse ausgelagert |
änderungen |
docs: README mit Installationsanleitung aktualisiert |
asdf |
Gängige Präfixe:
- feat: Neues Feature
- fix: Bugfix
- refactor: Code-Umbau ohne Funktionsänderung
- docs: Dokumentation
- style: Formatierung, keine Code-Änderung
- test: Tests hinzugefügt oder geändert
- chore: Wartungsarbeiten (Dependencies, Config, etc.)
PhpStorm-Shortcuts 🖱️
Wenn du PhpStorm nutzt, kannst du die meisten Git-Operationen direkt in der IDE ausführen:
| Aktion | Shortcut (Windows/Linux) | Shortcut (macOS) |
|---|---|---|
| Commit-Dialog öffnen | Ctrl + K |
Cmd + K |
| Push | Ctrl + Shift + K |
Cmd + Shift + K |
| Pull/Update | Ctrl + T |
Cmd + T |
| Git-Log anzeigen | Alt + 9 |
Cmd + 9 |
| Branches verwalten | Ctrl + Shift + ´ |
Ctrl + V dann Branches |
| VCS-Popup | Alt + ´ (Backtick) |
Ctrl + V |
Typischer Workflow auf einen Blick
flowchart TD
A["1. Branch erstellen\ngit switch -c feature-xy"] --> B["2. Code schreiben\nund Dateien ändern"]
B --> C["3. Änderungen prüfen\ngit status"]
C --> D["4. Dateien stagen\ngit add ."]
D --> E["5. Commit erstellen\ngit commit -m '...'"]
E --> F{"Fertig mit\nFeature?"}
F -->|Nein| B
F -->|Ja| G["6. Zurück zu main\ngit switch main"]
G --> H["7. Updates holen\ngit pull origin main"]
H --> I["8. Feature mergen\ngit merge feature-xy"]
I --> J["9. Hochladen\ngit push origin main"]
J --> K["10. Branch löschen\ngit branch -d feature-xy"]
Schnellreferenz – die 15 wichtigsten Befehle
| # | Befehl | Beschreibung |
|---|---|---|
| 1 | git init |
Neues Repository erstellen |
| 2 | git clone <url> |
Repository von Remote klonen |
| 3 | git status |
Aktuellen Zustand anzeigen |
| 4 | git add . |
Alle Änderungen stagen |
| 5 | git commit -m "..." |
Commit erstellen |
| 6 | git push |
Commits hochladen |
| 7 | git pull |
Änderungen herunterladen und mergen |
| 8 | git log --oneline |
Historie anzeigen |
| 9 | git branch |
Branches auflisten |
| 10 | git switch -c <name> |
Neuen Branch erstellen und wechseln |
| 11 | git switch <name> |
Zu Branch wechseln |
| 12 | git merge <branch> |
Branch zusammenführen |
| 13 | git diff |
Änderungen anzeigen |
| 14 | git restore <datei> |
Änderungen verwerfen |
| 15 | git remote -v |
Remote-Verbindungen anzeigen |
🎯 Merke dir: Mit nur fünf Befehlen (
status,add,commit,push,pull) kommst du im Alltag schon sehr weit. Alles andere lernst du nach und nach, wenn du es brauchst!