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