# Git-Befehle Spickzettel

Die wichtigsten Git-Kommandos für den Alltag. Kompakt zum Ausdrucken oder Danebenlegen.

## Einrichten

| Befehl | Wirkung |
|---|---|
| `git init` | Neues Repository im aktuellen Ordner anlegen |
| `git clone <url>` | Repository herunterladen |
| `git config --global user.name "Name"` | Namen für Commits setzen |
| `git config --global user.email "mail"` | E-Mail für Commits setzen |

## Status und Änderungen

| Befehl | Wirkung |
|---|---|
| `git status` | Was ist geändert, was ist gestaged |
| `git diff` | Änderungen im Detail anzeigen |
| `git diff --staged` | Änderungen im Staging-Bereich anzeigen |
| `git add <datei>` | Datei für den Commit vormerken |
| `git add .` | Alle Änderungen vormerken |
| `git restore <datei>` | Änderung in Datei verwerfen |

## Commit und Historie

| Befehl | Wirkung |
|---|---|
| `git commit -m "Nachricht"` | Vorgemerkte Änderungen festschreiben |
| `git commit -am "Nachricht"` | Getrackte Dateien vormerken und committen |
| `git log --oneline` | Kompakte Historie |
| `git log --graph --oneline --all` | Historie als Baum |
| `git show <hash>` | Details zu einem Commit |

## Branches

| Befehl | Wirkung |
|---|---|
| `git branch` | Branches auflisten |
| `git switch -c <name>` | Neuen Branch anlegen und wechseln |
| `git switch <name>` | Branch wechseln |
| `git merge <name>` | Branch in aktuellen mergen |
| `git branch -d <name>` | Branch löschen |

## Zusammenarbeit

| Befehl | Wirkung |
|---|---|
| `git pull` | Änderungen holen und einbauen |
| `git fetch` | Änderungen nur holen, nicht einbauen |
| `git push` | Eigene Commits hochladen |
| `git push -u origin <branch>` | Branch erstmalig hochladen |
| `git remote -v` | Verknüpfte Repositories anzeigen |

## Retten und Aufräumen

| Befehl | Wirkung |
|---|---|
| `git stash` | Änderungen zwischenparken |
| `git stash pop` | Geparkte Änderungen zurückholen |
| `git reset --soft HEAD~1` | Letzten Commit rückgängig, Änderungen behalten |
| `git revert <hash>` | Commit durch Gegen-Commit aufheben |
| `git checkout -- <datei>` | Datei auf letzten Commit-Stand zurücksetzen |

## Merksätze

- Erst `git status`, dann handeln. Immer.
- `reset` verändert die Historie, `revert` ergänzt sie. Im Team lieber `revert`.
- Commit-Nachrichten im Imperativ: "Fehler in Login beheben", nicht "Fehler behoben".
