← Zurück

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