Git Cheat Sheet
Die wichtigsten Git-Befehle für den Alltag.
Setup & Config
git config --global user.name "Max Muster"
git config --global user.email "max@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase true # rebase statt merge bei pull
git config --global core.editor "vim"
git config --list # alle Einstellungen anzeigen
Repository
git init # neues Repo erstellen
git clone https://github.com/user/repo.git # Repo klonen
git clone --depth 1 URL # nur letzter Commit (schneller)
git remote -v # Remotes anzeigen
git remote add origin URL # Remote hinzufügen
git remote set-url origin NEW_URL # Remote URL ändern
Grundlegende Workflow-Befehle
git status # Änderungen anzeigen
git add file.txt # Datei stagen
git add . # alle Änderungen stagen
git add -p # interaktiv stagen (Hunk für Hunk)
git commit -m "Fix login bug" # Commit
git commit -am "Quick fix" # add + commit (nur tracked files!)
git commit --amend # letzten Commit ändern
git commit --amend --no-edit # nur Dateien nachträglich hinzufügen
git push # zum Remote pushen
git push -u origin feature-branch # neuen Branch pushen + Tracking
git pull # fetch + merge/rebase
git fetch # nur holen, nicht mergen
Branches
git branch # lokale Branches anzeigen
git branch -a # alle (inkl. remote) anzeigen
git branch feature-x # neuen Branch erstellen
git checkout feature-x # Branch wechseln
git checkout -b feature-x # erstellen + wechseln
git switch feature-x # Branch wechseln (modern)
git switch -c feature-x # erstellen + wechseln (modern)
git branch -d feature-x # Branch löschen (safe)
git branch -D feature-x # Branch löschen (force)
git push origin --delete feature-x # Remote Branch löschen
git branch -m old-name new-name # Branch umbenennen
Mergen & Rebasen
# Merge
git merge feature-x # feature-x in aktuellen Branch mergen
git merge --no-ff feature-x # immer Merge-Commit erstellen
git merge --abort # Merge abbrechen
# Rebase
git rebase main # aktuellen Branch auf main rebasen
git rebase -i HEAD~3 # letzte 3 Commits interaktiv bearbeiten
git rebase --abort # Rebase abbrechen
git rebase --continue # nach Konfliktlösung fortfahren
# Cherry-Pick
git cherry-pick abc123 # einzelnen Commit übernehmen
git cherry-pick abc123..def456 # Bereich von Commits
Stash
git stash # Änderungen zwischenspeichern
git stash -m "WIP: new feature" # mit Nachricht
git stash -u # inkl. untracked files
git stash list # alle Stashes anzeigen
git stash pop # letzten Stash anwenden + löschen
git stash apply stash@{2} # bestimmten Stash anwenden
git stash drop stash@{0} # Stash löschen
git stash clear # alle Stashes löschen
History & Diff
git log # Commit-History
git log --oneline # kompakt
git log --oneline --graph --all # als ASCII-Graph
git log --author="Max" --since="2 weeks ago"
git log -p file.txt # Änderungen pro Commit für Datei
git log -S "searchTerm" # Commits die Text hinzufügen/entfernen
git diff # unstaged Änderungen
git diff --staged # staged Änderungen
git diff main..feature # Unterschiede zwischen Branches
git diff HEAD~3 # letzte 3 Commits
git show abc123 # Commit Details anzeigen
git blame file.txt # Wer hat welche Zeile geändert?
git shortlog -sn # Commits pro Autor
Rückgängig machen
# Staged Änderungen unstagen
git restore --staged file.txt
git reset HEAD file.txt # ältere Syntax
# Änderungen in Datei verwerfen
git restore file.txt
git checkout -- file.txt # ältere Syntax
# Letzten Commit rückgängig machen (Code bleibt staged)
git reset --soft HEAD~1
# Letzten Commit rückgängig machen (Code bleibt unstaged)
git reset HEAD~1
# Letzten Commit komplett verwerfen (VORSICHT!)
git reset --hard HEAD~1
# Commit rückgängig machen mit neuem Commit (sicher für shared Branches)
git revert abc123
# Einzelne Datei auf Stand eines Commits zurücksetzen
git restore --source=abc123 file.txt
Tags
git tag v1.0.0 # Lightweight Tag
git tag -a v1.0.0 -m "Release 1.0" # Annotated Tag
git tag -a v1.0.0 abc123 # Tag auf bestimmten Commit
git tag # Tags anzeigen
git push origin v1.0.0 # Tag pushen
git push origin --tags # alle Tags pushen
git tag -d v1.0.0 # lokalen Tag löschen
git push origin --delete v1.0.0 # Remote Tag löschen
Aufräumen
git clean -n # zeigen was gelöscht würde
git clean -fd # untracked Dateien + Ordner löschen
git gc # Garbage Collection
git prune # unerreichbare Objekte löschen
git remote prune origin # gelöschte Remote-Branches aufräumen
git fetch --prune # fetch + prune
Worktrees
git worktree add ../hotfix main # neuen Worktree erstellen
git worktree list # alle Worktrees anzeigen
git worktree remove ../hotfix # Worktree entfernen
# Mehrere Branches gleichzeitig ausgecheckt!
Bisect (Bug suchen)
git bisect start
git bisect bad # aktueller Commit ist kaputt
git bisect good v1.0.0 # dieser Commit war OK
# Git checkt automatisch Commits aus — du testest:
git bisect good # dieser ist OK
git bisect bad # dieser ist kaputt
# Git findet den schuldigen Commit!
git bisect reset # zurück zum Ausgangszustand
.gitignore
# Dateien
*.log
*.env
.DS_Store
# Ordner
node_modules/
dist/
build/
.idea/
target/
# Ausnahme
!important.log
# Patterns
**/temp/ # temp/ in jedem Unterordner
doc/**/*.pdf # alle PDFs unter doc/
Tipps & Aliase
# Nützliche Aliase
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all --decorate"
git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"
git config --global alias.amend "commit --amend --no-edit"
# Schnelle Tricks
git commit --fixup=abc123 # Fixup-Commit für späteren Rebase
git rebase -i --autosquash # Fixups automatisch einordnen
git log --all --oneline -- file # Datei in allen Branches suchen
git reflog # alle HEAD-Bewegungen (Rettungsanker!)
Quick Reference
Aktion Befehl
───────────────────────── ──────────────────────────
Neuer Branch git switch -c name
Branch mergen git merge name
Rebase git rebase main
Stash git stash / git stash pop
Letzten Commit ändern git commit --amend
Commit rückgängig git revert hash
Hard Reset git reset --hard HEAD~1
Datei wiederherstellen git restore file.txt
Interaktiv stagen git add -p
History durchsuchen git log -S "text"
Bug finden git bisect start
Reflog (Rettung!) git reflog