Git-Befehlsreferenz
Komplettes Git-Befehle Referenzhandbuch, nach Kategorien organisiert
Grundlegende Befehle(13)
Neues Git-Repository im aktuellen Verzeichnis erstellen
Remote-Repository lokal klonen
Shallow Clone, nur letzter Commit
Datei zum Staging-Bereich hinzufügen
Alle Änderungen zum Staging hinzufügen
Staged Änderungen committen
Letzten Commit ändern
Aktuellen Repository-Status anzeigen
Unstaged Änderungen anzeigen
Staged Änderungen anzeigen
Alle Konfiguration anzeigen
Globalen Benutzername setzen
Globale Email setzen
Branch-Management(14)
Alle lokalen Branches auflisten
Alle Branches (inklusive Remote) auflisten
Neuen Branch erstellen
Branch löschen
Branch umbenennen
Zu Branch wechseln
Neuen Branch erstellen und wechseln
Zu Branch wechseln (Git 2.23+)
Neuen Branch erstellen und wechseln (Git 2.23+)
Angegebenen Branch in aktuellen mergen
Merge mit Merge-Commit
Aktuellen Branch auf angegebenen Branch rebasen
Rebase nach Konfliktlösung fortsetzen
Spezifischen Commit auf aktuellen Branch anwenden
Remote-Operationen(10)
Remote-Repository Details anzeigen
Remote-Repository hinzufügen
Letzte Inhalte von Remote abrufen
Updates von allen Remotes abrufen
Remote-Branch abrufen und mergen
Abrufen und rebase
Zu Remote-Repository pushen
Force Push (mit Vorsicht verwenden)
Push und Upstream-Branch setzen
Remote-Branch löschen
Änderungen Rückgängig(8)
Datei unstagen
Letzten Commit zurücknehmen, Änderungen behalten
Commit und Staging zurücknehmen, Working Directory behalten
Commit zurücknehmen, alle Änderungen verwerfen
Commit zurücknehmen (neuer Commit erstellt)
Working Directory Datei wiederherstellen (Git 2.23+)
Datei unstagen (Git 2.23+)
Ungetrackte Dateien und Verzeichnisse entfernen
Tag-Management(6)
Alle Tags auflisten
Lightweight Tag erstellen
Annotated Tag erstellen
Lokalen Tag löschen
Tag zu Remote pushen
Alle Tags zu Remote pushen
Historie Anzeigen(7)
Commit-Historie anzeigen
Kompakte Commit-Historie anzeigen
Alle Branch-Historie als Graph anzeigen
Commit-Details anzeigen
Änderungshistorie für jede Zeile anzeigen
Alle Operationshistorie anzeigen
Binäre Suche für Problem-Commit starten
Stash(7)
Aktuelle Änderungen stashen
Änderungen mit Nachricht stashen
Alle Stashes auflisten
Letzten Stash anwenden und löschen
Stash anwenden ohne Löschen
Letzten Stash löschen
Alle Stashes löschen
Was ist Git?
Ein Git-Cheat-Sheet ist eine schnelle Referenz für häufige Versionskontrollbefehle, sortiert nach der Aufgabe, die erledigt werden soll. Git ist ein verteiltes Versionskontrollsystem: Jeder Clone enthält die Projektgeschichte, Branches sind leichte Zeiger und Commits dokumentieren, wie sich eine Codebasis im Laufe der Zeit verändert hat. Das Cheat-Sheet hilft, wenn der Arbeitsablauf klar ist, aber die genaue Syntax fehlt, etwa beim Anzeigen gestagter Änderungen, Erstellen eines Branches, Rückgängigmachen eines Commits, Stashen, Taggen eines Releases oder Synchronisieren mit einem Remote. Es ist eine Referenz, kein Ersatz für Verständnis des Repository-Zustands. Destruktive Befehle wie reset --hard, clean -fd, rebase und force push sollten nur nach Prüfung von uncommitted Work, aktuellem Branch und Remote-Auswirkungen kopiert werden.
Verwendungshandbuch
Schnellreferenz
- Klicke auf eine Befehlskarte, um den Befehl zu kopieren
- Verwende die Suchleiste, um schnell bestimmte Befehle zu finden
- Klicke auf Kategorietags, um nach Typ zu filtern
- Fahre mit der Maus über Befehle, um detaillierte Beschreibungen anzuzeigen
Funktionen
Erweiterte Tipps
- Verwende git restore --staged, um Dateien aus dem Staging-Bereich zu entfernen
- Verwende git commit --amend, um den letzten Commit zu ändern
- Verwende git stash, um Arbeitsfortschritt vorübergehend zu sichern
- Verwende git revert, um gepushte Commits rückgängig zu machen
Anwendungsfälle
Technisches Prinzip
Lokale Änderungen fließen durch drei Bereiche: das Arbeitsverzeichnis, den Index (auch Staging-Bereich genannt, gespeichert in .git/index) und die Objektdatenbank. git add protokolliert Blob-Hashes im Index, git commit friert den Index in einen neuen Tree- plus Commit-Objekt ein, und git checkout/switch aktualisiert den Index und den Working Tree auf einen Ziel-Commit. Merges fallen in zwei Kategorien: Fast-Forward rückt den Branch-Zeiger einfach vor, wenn das Ziel ein direkter Nachfahre ist, während Drei-Wege-Merges (recursive- oder ort-Strategie) einen gemeinsamen Vorfahren berechnen und einen Merge-Commit mit zwei Elternteilen erstellen. git rebase schreibt die Historie um, indem Commits einzeln auf eine neue Basis repliziert werden und dabei neue SHAs entstehen.
Die Remote-Synchronisierung erfolgt über das HTTPS-Smart-Protokoll, SSH oder das veraltete git://-Protokoll und tauscht Pack-Dateien aus, die durch Delta-Kompression erzeugt werden. Nach einem Fetch speichert Git den Snapshot unter refs/remotes/origin/* und der Reflog unter .git/logs/ führt standardmäßig eine 90-tägige Undo-Spur (gc.reflogExpire), sodass selbst reset --hard oder ein missglückter Rebase wiederhergestellt werden können, bevor die Garbage Collection nicht erreichbare Objekte bereinigt.
- Objektmodell: blob, tree, commit, tag – inhaltsadressiert über SHA-1 (oder SHA-256 seit 2.29), gespeichert als lose Objekte unter .git/objects/xx/ oder gepackt in .git/objects/pack/*.pack
- Index/Staging: .git/index ist eine Binärdatei, die Pfad → Blob-Hash + Stat-Info abbildet; git add aktualisiert sie, git commit friert sie in einen Tree ein
- Refs und HEAD: refs/heads/<branch>, refs/remotes/<remote>/<branch>, refs/tags/<tag> sind einfache Dateien mit einem SHA; HEAD ist eine symbolische Referenz auf den aktuellen Branch
- Merge-Strategien: Fast-Forward, wenn das Ziel ein Nachfahre ist, sonst Drei-Wege-Recursive/ort-Merge mit der Merge-Basis; --no-ff erzwingt einen Merge-Commit
- Rebase-Umschreibungen: git rebase repliziert Commits auf eine neue Basis und erzeugt neue SHAs, was gemeinsame Historie bricht, wenn gepusht – daher wird --force-with-lease gegenüber --force bevorzugt
- Reflog-Wiederherstellung: .git/logs/HEAD und Ref-spezifische Logs bewegen Ref-Bewegungen für 90 Tage (gc.reflogExpire); git reflog plus git reset stellt nach destruktiven Operationen wieder her
- Transport: Smart HTTPS, SSH oder git:// verhandeln Pack-Dateien über das upload-pack/receive-pack-Protokoll; Shallow Clones verwenden --depth zur Begrenzung der Historie
Beispiele
Neuen Branch erstellen und wechseln
git checkout -b feature/login # Neuen Branch erstellen und wechselnÄnderungen im Arbeitsverzeichnis rückgängig machen
git restore filename # Datei auf den letzten committeten Stand zurücksetzenCommit-Verlauf anzeigen
git log --oneline --graph --all # Verlauf aller Branches grafisch darstellenFAQ
Wie mache ich meinen letzten Commit rückgängig?
git reset --soft HEAD~1 lässt deine Änderungen gestaged, sodass du erneut committen kannst; git reset --mixed HEAD~1 behält sie im Working Tree, aber unstaged; git reset --hard HEAD~1 verwirft sie. Wenn der Commit bereits gepusht ist, nutze stattdessen git revert HEAD — das erzeugt einen neuen Commit, der die Änderung rückgängig macht, ohne die History umzuschreiben.
Was ist der Unterschied zwischen git pull und git fetch?
git fetch lädt nur Commits vom Remote in deine lokalen Refs herunter — dein Working Branch wird nie angefasst. git pull entspricht git fetch gefolgt von git merge (oder git rebase, falls --rebase gesetzt ist). Nutze fetch, wenn du Upstream-Änderungen vor der Integration prüfen willst.
Wie verwerfe ich lokale Änderungen an einer Datei?
git restore <file> verwirft uncommittete Änderungen im Working Tree; git restore --staged <file> macht ein Staging rückgängig, ohne den Inhalt zu verlieren; git checkout HEAD -- <file> stellt die Version aus dem letzten Commit wieder her. Für unverfolgte Dateien nutze git clean -f oder -fd, um auch Verzeichnisse zu entfernen.
Wann sollte ich rebase vs. merge nutzen?
Rebase, wenn du auf einem privaten Feature-Branch eine lineare History willst, bevor du ihn zurückmergest. Merge, wenn du einen geteilten Branch integrierst und die tatsächliche Entwicklungshistorie erhalten bleiben soll. Rebase niemals Commits, die auf einen geteilten Branch gepusht wurden, sofern das Team nicht zustimmt — es schreibt SHAs um und zerstört Klone anderer.
Wie sehe ich, was als Nächstes gepusht wird?
git log @{u}.. zeigt Commits auf deinem Branch, die nicht im Upstream sind. git diff @{u} zeigt das kombinierte Diff. git status (nach einem fetch) im Vergleich zu origin zeigt Ahead-/Behind-Zähler.
Wie stelle ich einen gelöschten Branch oder verlorenen Commit wieder her?
git reflog listet jede Position, an der HEAD je war; finde die SHA des verlorenen Commits und führe git checkout <sha> oder git branch <name> <sha> aus. Reflog-Einträge halten standardmäßig etwa 90 Tage vor der Garbage Collection — also kümmere dich kurz nach dem Fehler darum.
Wie ändere ich einen Commit am sichersten nachträglich?
git commit --amend lässt dich die Nachricht des letzten Commits bearbeiten oder vergessene Dateien hinzufügen. Es schreibt die SHA um, also tu es nur mit lokalen, noch nicht gepushten Commits. Musst du einen gepushten Commit ändern, pushe mit --force-with-lease (nicht --force), um Updates der Teammitglieder nicht zu überschreiben.