Git Spickzettel
📚 Git Spickzettel
Kurzreferenz für die tägliche Arbeit mit Git-Repositories.
- Fokus auf die wichtigsten Befehle für Setup, Commits, Branches, Remotes und Fehlerbehebung
- Alle Befehle sind ohne Gewähr – vor destruktiven Aktionen immer Änderungen sichern
- Gilt für Git unter Windows, macOS und Linux (Befehle identisch)
🚀 Schnelleinstieg
| Aktion | Befehl |
|---|---|
| Benutzer konfigurieren (global) | git config --global user.name "Max Mustermann"git config --global user.email "max@example.com" |
| Neues Repo initialisieren | git init |
| Vorhandenes Repo klonen | git clone <URL> [zielordner] |
| Status anzeigen | git status |
📝 Staging & Commit
| Aktion | Befehl |
|---|---|
| Alle Änderungen vormerken | git add -A |
| Einzelne Datei vormerken | git add pfad/datei.ext |
| Commit erstellen | git commit -m "Nachricht" |
| Letzten Commit-Text ändern | git commit --amend -m "Neue Nachricht" |
| Teilstücke committen (Interaktiv) | git add -p |
🌿 Branches
| Aktion | Befehl |
|---|---|
| Branches auflisten | git branch |
| Neuen Branch erstellen | git branch feature/x |
| Wechseln | git switch feature/x oder git checkout feature/x |
| Erstellen & wechseln | git switch -c feature/x oder git checkout -b feature/x |
| Branch löschen (lokal) | git branch -d feature/x |
🔀 Merge & Rebase
| Aktion | Befehl |
|---|---|
| Branch in aktuellen mergen | git merge feature/x |
| Feature auf Basis von main neu aufsetzen | git rebase main |
| Merge-Konflikte lösen | Konflikte bearbeiten → git add betroffene Dateien → git merge --continue oder git rebase --continue |
| Rebase abbrechen | git rebase --abort |
🌐 Remotes
| Aktion | Befehl |
|---|---|
| Remote anzeigen | git remote -v |
| Remote hinzufügen | git remote add origin <URL> |
| Änderungen holen | git fetch |
| Pull (holen + mergen) | git pull |
| Push (aktuellen Branch) | git push |
| Upstream setzen | git push -u origin <branch> |
| Tags pushen | git push --tags |
🧰 Änderungen rückgängig machen
| Aktion | Befehl |
|---|---|
| Datei zurücksetzen (Arbeitsverzeichnis) | git restore pfad/datei.ext |
| Staging entfernen | git restore --staged pfad/datei.ext |
| Letzten Commit rückgängig (neuer Commit) | git revert HEAD |
| Auf Commit hart zurücksetzen (ACHTUNG) | git reset --hard <commit> |
| Verlorenes wiederfinden | git reflog |
📦 Stash (Zwischenspeicher)
| Aktion | Befehl |
|---|---|
| Änderungen stashen | git stash oder git stash push -m "msg" |
| Stashes anzeigen | git stash list |
| Letzten Stash anwenden | git stash apply |
| Letzten Stash anwenden und löschen | git stash pop |
🏷️ Tags & Releases
| Aktion | Befehl |
|---|---|
| Leichtes Tag | git tag v1.0.0 |
| Annotiertes Tag | git tag -a v1.0.0 -m "Release 1.0.0" |
| Tags pushen | git push --tags |
🧩 Submodule
| Aktion | Befehl |
|---|---|
| Submodule hinzufügen | git submodule add <URL> pfad/unterprojekt |
| Submodule initialisieren | git submodule update --init --recursive |
| Alle Submodule aktualisieren | git submodule update --remote --merge |
🌲 Worktrees (parallele Arbeitsbäume)
| Aktion | Befehl |
|---|---|
| Worktree erstellen | git worktree add ../ordner feature/x |
| Worktrees anzeigen | git worktree list |
| Worktree entfernen | git worktree remove ../ordner |
🙈 .gitignore (Dateien ignorieren)
# Ordner node_modules/ .DS_Store vendor/ # Logs/Builds *.log /dist /build # Umgebungsdateien .env .env.local
🔎 Logs & Diff
| Aktion | Befehl |
|---|---|
| Historie kompakt | git log --oneline --graph --decorate --all |
| Änderungen seit letztem Commit | git diff |
| Geänderte, aber nicht gestagte Dateien | git diff --name-only |
| Staged vs. letzter Commit | git diff --cached |
🔐 Konfiguration & SSH
| Aktion | Befehl |
|---|---|
| Konfiguration anzeigen | git config --list |
| SSH-Key erzeugen | ssh-keygen -t ed25519 -C "dein@beispiel" |
| SSH-Agent (Windows PowerShell) | Start-Service ssh-agent; Get-Service ssh-agent; ssh-add "$Env:USERPROFILE\.ssh\id_ed25519" |
🆘 Troubleshooting
# Falscher letzter Commit (Nachricht ändern / Dateien ergänzen) # (nur lokal, noch nicht gepusht) git commit --amend # Lokalen Branch neu auf Remote ausrichten (ACHTUNG: verwirft lokale Änderungen) git fetch origin git reset --hard origin/main # Datei versehentlich gelöscht? (suche im Reflog) git reflog # Merge/Rebase-Konflikt abbrechen git merge --abort # oder git rebase --abort
