Git Commands Reference
Eine umfassende Übersicht über die wichtigsten Git-Befehle, kategorisiert nach globalen und repository-spezifischen Kommandos.
🌍 Globale Git-Konfiguration
Grundlegende Identitätskonfiguration
# Globaler Benutzername
git config --global user.name "Dein Name"
# Globale E-Mail-Adresse
git config --global user.email "deine.email@example.com"
# Standardeditor festlegen
git config --global core.editor "code" # VS Code
git config --global core.editor "vim" # Vim
git config --global core.editor "nano" # Nano
Globale Einstellungen
# Standardbranch-Name festlegen
git config --global init.defaultBranch main
# Automatische Zeilenendekorrektur
git config --global core.autocrlf true # Windows
git config --global core.autocrlf input # macOS/Linux
# Farben aktivieren
git config --global color.ui auto
# Push-Verhalten festlegen
git config --global push.default simple
# Pull-Verhalten (rebase statt merge)
git config --global pull.rebase true
# Globale .gitignore-Datei
git config --global core.excludesfile ~/.gitignore_global
Aliases (Globale Shortcuts)
# Kurze Status-Anzeige
git config --global alias.st status
# Kurze Log-Anzeige
git config --global alias.lg "log --oneline --graph --decorate"
# Schöne Log-Anzeige
git config --global alias.lol "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# Checkout-Alias
git config --global alias.co checkout
# Branch-Alias
git config --global alias.br branch
# Commit-Alias
git config --global alias.ci commit
# Unstage-Alias
git config --global alias.unstage "reset HEAD --"
# Last commit
git config --global alias.last "log -1 HEAD"
Globale Konfiguration anzeigen
# Alle globalen Einstellungen anzeigen
git config --global --list
# Spezifische Einstellung anzeigen
git config --global user.name
# Konfigurationsdatei bearbeiten
git config --global --edit
📁 Repository-spezifische Befehle
🚀 Neues Repository von Grund auf erstellen
Kompletter Workflow für neues Repository
# 1. README-Datei erstellen
touch README.md
# 2. Git-Repository initialisieren
git init
# 3. Zu main-Branch wechseln (falls nicht bereits default)
git checkout -b main
# 4. README zur Staging Area hinzufügen
git add README.md
# 5. Ersten Commit erstellen
git commit -m "first commit"
# 6. Remote Repository hinzufügen
git remote add origin https://github.com/username/repository.git
# 7. Branch zum Remote Repository pushen und tracken
git push -u origin main
Alternative für existierendes lokales Repository
# Wenn bereits Dateien vorhanden sind
git init
git add .
git commit -m "Initial commit"
git branch -M main # Branch zu main umbenennen (falls nötig)
git remote add origin https://github.com/username/repository.git
git push -u origin main
Schnell-Setup mit verschiedenen Dateitypen
# Mehrere Startdateien erstellen
touch README.md .gitignore LICENSE
# Alle Dateien hinzufügen
git add .
# Oder spezifisch
git add README.md .gitignore LICENSE
# Ersten Commit mit detaillierter Nachricht
git commit -m "Initial commit
- Add README.md
- Add .gitignore
- Add LICENSE file"
# Remote hinzufügen und pushen
git remote add origin https://github.com/username/repository.git
git push -u origin main
Repository-Initialisierung und -Klonen
# Neues Repository initialisieren
git init
# Repository klonen
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git # SSH
# Repository mit spezifischem Ordnernamen klonen
git clone https://github.com/user/repo.git mein-ordner
# Nur den neuesten Commit klonen (shallow clone)
git clone --depth 1 https://github.com/user/repo.git
Lokale Repository-Konfiguration
# Repository-spezifischen Benutzernamen setzen
git config user.name "Anderer Name"
# Repository-spezifische E-Mail setzen
git config user.email "andere.email@example.com"
# Repository-Konfiguration anzeigen
git config --list --local
Working Directory und Staging
# Status des Repositories anzeigen
git status
git status -s # Kurze Ausgabe
# Dateien zur Staging Area hinzufügen
git add datei.txt
git add . # Alle Änderungen
git add -A # Alle Änderungen (inklusive gelöschte)
git add *.js # Alle JavaScript-Dateien
git add ordner/ # Ganzen Ordner hinzufügen
# Interaktives Hinzufügen
git add -i
git add -p # Patch-Modus (teilweise hinzufügen)
# Dateien aus Staging Area entfernen
git reset datei.txt
git reset # Alle Dateien aus Staging entfernen
git restore --staged datei.txt # Alternative zu reset
# Änderungen verwerfen
git restore datei.txt # Änderungen in Datei verwerfen
git checkout -- datei.txt # Alternative zu restore
git clean -f # Ungetrackte Dateien löschen
git clean -fd # Ungetrackte Dateien und Ordner löschen
Commits
# Commit erstellen
git commit -m "Commit-Nachricht"
# Alle getrackte Änderungen committen (ohne git add)
git commit -a -m "Commit-Nachricht"
git commit -am "Commit-Nachricht"
# Leerer Commit (für Trigger etc.)
git commit --allow-empty -m "Leerer Commit"
# Letzten Commit ändern
git commit --amend -m "Neue Commit-Nachricht"
git commit --amend --no-edit # Ohne Nachricht zu ändern
# Commit mit Autor überschreiben
git commit --author="Name <email@example.com>" -m "Nachricht"
Branches
# Branches anzeigen
git branch # Lokale Branches
git branch -r # Remote Branches
git branch -a # Alle Branches
# Neuen Branch erstellen
git branch neuer-branch
# Branch erstellen und wechseln
git checkout -b neuer-branch
git switch -c neuer-branch # Moderne Alternative
# Zu Branch wechseln
git checkout branch-name
git switch branch-name # Moderne Alternative
# Branch umbenennen
git branch -m alter-name neuer-name
git branch -m neuer-name # Aktuellen Branch umbenennen
# Branch löschen
git branch -d branch-name # Sicheres Löschen
git branch -D branch-name # Erzwungenes Löschen
# Remote Branch löschen
git push origin --delete branch-name
Remote Repositories
# Remote Repositories anzeigen
git remote
git remote -v # Mit URLs
# Remote Repository hinzufügen
git remote add origin https://github.com/user/repo.git
# Remote Repository URL ändern
git remote set-url origin https://github.com/user/neues-repo.git
# Remote Repository entfernen
git remote remove origin
# Vom Remote Repository holen (ohne merge)
git fetch origin
# Vom Remote Repository holen und mergen
git pull origin main
git pull # Mit getracktem Branch
# Zum Remote Repository pushen
git push origin main
git push # Mit getracktem Branch
git push -u origin main # Branch tracken und pushen
# Alle Branches pushen
git push --all origin
# Tags pushen
git push --tags origin
# Force Push (Vorsicht!)
git push --force-with-lease origin main
git push -f origin main # Gefährlicher Force Push
Merging und Rebasing
# Branch mergen
git merge feature-branch
# Fast-Forward Merge verhindern
git merge --no-ff feature-branch
# Merge abbrechen
git merge --abort
# Rebase
git rebase main # Aktuellen Branch auf main rebasen
git rebase --interactive HEAD~3 # Interaktives Rebase der letzten 3 Commits
# Rebase abbrechen
git rebase --abort
# Rebase fortsetzen (nach Konfliktlösung)
git rebase --continue
History und Logs
# Commit-History anzeigen
git log
git log --oneline # Kompakte Anzeige
git log --graph # Grafische Darstellung
git log --all --graph # Alle Branches grafisch
git log -p # Mit Änderungen
git log -n 5 # Nur die letzten 5 Commits
# Bestimmten Zeitraum anzeigen
git log --since="2 weeks ago"
git log --until="2023-12-31"
git log --author="Name"
# Änderungen zwischen Commits anzeigen
git diff
git diff --staged # Staging Area vs. letzter Commit
git diff HEAD~1 # Gegen vorletzten Commit
git diff branch1..branch2 # Zwischen Branches
# Datei-History
git log --follow datei.txt
git blame datei.txt # Zeigt wer was geändert hat
Stashing
# Änderungen temporär speichern
git stash
git stash save "Beschreibung"
# Stash-Liste anzeigen
git stash list
# Stash anwenden
git stash apply # Neuesten Stash anwenden
git stash apply stash@{2} # Spezifischen Stash anwenden
# Stash anwenden und löschen
git stash pop
# Stash löschen
git stash drop stash@{0}
git stash clear # Alle Stashes löschen
# Ungetrackte Dateien mit stashen
git stash -u
Tags
# Tags anzeigen
git tag
git tag -l "v1.*" # Tags mit Pattern
# Lightweight Tag erstellen
git tag v1.0
# Annotated Tag erstellen
git tag -a v1.0 -m "Version 1.0"
# Tag zu spezifischem Commit
git tag -a v1.0 9fceb02 -m "Version 1.0"
# Tag löschen
git tag -d v1.0
# Remote Tag löschen
git push origin --delete v1.0
# Tag auschecken
git checkout v1.0
Reset und Revert
# Soft Reset (behält Änderungen in Staging)
git reset --soft HEAD~1
# Mixed Reset (behält Änderungen im Working Directory)
git reset HEAD~1
git reset --mixed HEAD~1
# Hard Reset (verwirft alle Änderungen)
git reset --hard HEAD~1
# Zu spezifischem Commit resetten
git reset --hard 9fceb02
# Commit rückgängig machen (sicher für öffentliche Repos)
git revert HEAD
git revert 9fceb02
Nützliche Utilities
# Repository-Status bereinigen
git gc # Garbage Collection
git fsck # Repository-Integrität prüfen
# Repository-Größe optimieren
git gc --aggressive
# Reflog anzeigen (lokale History)
git reflog
# Verlorene Commits finden
git fsck --lost-found
# Suche in Repository
git grep "Suchbegriff"
git log --grep="Commit-Nachricht suchen"
# Dateien umbenennen (Git-tracked)
git mv alte-datei.txt neue-datei.txt
# Repository-Root finden
git rev-parse --show-toplevel
# Aktuellen Branch-Namen ausgeben
git branch --show-current
git rev-parse --abbrev-ref HEAD
🚨 Wichtige Tipps
.gitignore Beispiele
# Betriebssystem
.DS_Store
Thumbs.db
# IDE/Editor
.vscode/
.idea/
*.swp
*.swo
# Dependencies
node_modules/
vendor/
# Build-Artefakte
dist/
build/
*.o
*.exe
# Logs
*.log
logs/
# Umgebungsvariablen
.env
.env.local
# Temporäre Dateien
*.tmp
*.temp
Häufige Workflows
# Feature Branch Workflow
git checkout main
git pull origin main
git checkout -b feature/neue-funktion
# ... Entwicklung ...
git add .
git commit -m "Neue Funktion implementiert"
git push -u origin feature/neue-funktion
# ... Pull Request erstellen ...
git checkout main
git pull origin main
git branch -d feature/neue-funktion
# Hotfix Workflow
git checkout main
git checkout -b hotfix/kritischer-bug
# ... Bugfix ...
git add .
git commit -m "Kritischen Bug behoben"
git push -u origin hotfix/kritischer-bug
SSH-Keys für GitHub/GitLab
# SSH-Key generieren
ssh-keygen -t ed25519 -C "deine.email@example.com"
# SSH-Agent starten
eval "$(ssh-agent -s)"
# SSH-Key hinzufügen
ssh-add ~/.ssh/id_ed25519
# Öffentlichen Schlüssel anzeigen (zum Kopieren)
cat ~/.ssh/id_ed25519.pub
Hinweis: Diese Referenz deckt die wichtigsten Git-Befehle ab. Für spezielle Anwendungsfälle solltest du die offizielle Git-Dokumentation konsultieren.