Git Befehle
Git Befehle – Cheatsheet
Schnellreferenz für Git Versionskontrolle.
⚙️ Einrichtung
# Name und E-Mail
git config --global user.name "Name"
git config --global user.email "email@example.com"
# Standard-Branch
git config --global init.defaultBranch main
# Editor
git config --global core.editor nano
# Config anzeigen
git config --list
📁 Repository
# Neues Repo erstellen
git init
# Repo klonen
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
# In Ordner klonen
git clone URL ordnername
📊 Status & Info
# Status
git status
git status -s # Kurz
# Log
git log
git log --oneline # Kompakt
git log --oneline -10 # Letzte 10
git log --graph --all # Mit Branches
git log --author="Name" # Nach Autor
git log datei.txt # Eine Datei
# Änderungen
git diff # Ungestaged
git diff --staged # Staged
git diff HEAD~1 # Zum letzten Commit
git diff branch1 branch2 # Zwischen Branches
➕ Änderungen hinzufügen
# Einzelne Datei
git add datei.txt
# Mehrere Dateien
git add datei1.txt datei2.txt
# Alle Änderungen
git add .
git add -A
# Interaktiv
git add -p
💾 Commit
# Mit Message
git commit -m "Beschreibung"
# Add + Commit (nur getrackte Dateien)
git commit -am "Beschreibung"
# Letzten Commit ändern
git commit --amend -m "Neue Message"
git commit --amend --no-edit # Nur Dateien hinzufügen
# Leerer Commit
git commit --allow-empty -m "Trigger CI"
🌿 Branches
# Branches anzeigen
git branch # Lokal
git branch -a # Alle
git branch -v # Mit letztem Commit
# Branch erstellen
git branch name
# Branch wechseln
git checkout name
git switch name # Neuere Syntax
# Erstellen + wechseln
git checkout -b name
git switch -c name
# Branch löschen
git branch -d name # Nur wenn gemerged
git branch -D name # Erzwingen
# Branch umbenennen
git branch -m alt neu
🔀 Mergen & Rebase
# Branch mergen
git checkout main
git merge feature
# Merge abbrechen
git merge --abort
# Rebase
git checkout feature
git rebase main
# Interaktiver Rebase
git rebase -i HEAD~3
🌐 Remote
# Remote anzeigen
git remote -v
# Remote hinzufügen
git remote add origin URL
# Remote ändern
git remote set-url origin URL
# Remote entfernen
git remote remove origin
⬆️ Push & Pull
# Push
git push
git push origin main
git push -u origin main # Branch verknüpfen
# Force Push (VORSICHT!)
git push --force
git push --force-with-lease # Sicherer
# Pull
git pull
git pull origin main
# Fetch (ohne Merge)
git fetch
git fetch --all
↩️ Rückgängig machen
# Datei-Änderung verwerfen
git checkout -- datei.txt
git restore datei.txt
# Aus Staging entfernen
git reset HEAD datei.txt
git restore --staged datei.txt
# Letzten Commit rückgängig
git reset --soft HEAD~1 # Änderungen behalten
git reset --hard HEAD~1 # Änderungen löschen!
# Commit rückgängig (neuer Commit)
git revert HEAD
git revert abc123
# Alles auf Stand von Remote
git reset --hard origin/main
📦 Stash (Zwischenspeicher)
# Änderungen stashen
git stash
git stash -m "Beschreibung"
# Mit ungetrackten Dateien
git stash -u
# Stashes anzeigen
git stash list
# Stash anwenden
git stash pop # Anwenden + löschen
git stash apply # Nur anwenden
# Bestimmten Stash
git stash pop stash@{1}
# Stash löschen
git stash drop stash@{0}
git stash clear # Alle
🏷️ Tags
# Tags anzeigen
git tag
# Tag erstellen
git tag v1.0.0
git tag -a v1.0.0 -m "Version 1.0.0"
# Tag pushen
git push origin v1.0.0
git push --tags # Alle Tags
# Tag löschen
git tag -d v1.0.0
git push origin --delete v1.0.0
🔍 Suchen
# In Commits suchen
git log --grep="bug"
git log -S "funktionsname"
# In Dateien suchen
git grep "suchbegriff"
# Wer hat Zeile geschrieben?
git blame datei.txt
🧹 Aufräumen
# Ungetrackte Dateien anzeigen
git clean -n
# Ungetrackte Dateien löschen
git clean -f
git clean -fd # Mit Ordnern
# Alte Branches löschen
git remote prune origin
git branch --merged | grep -v main | xargs git branch -d
📝 .gitignore
# Ordner
node_modules/
__pycache__/
.venv/
# Dateien
.env
*.log
.DS_Store
# Muster
*.pyc
test_*
# Ausnahme
!wichtig.log
⚡ Nützliche Aliase
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"
git config --global alias.last "log -1 HEAD"
git config --global alias.lg "log --oneline --graph --all"
Dann: git st statt git status