Git Spickzettel — Befehle zum Kopieren

Jeder Git-Befehl, den du im Alltag brauchst, und die, die du brauchst, wenn etwas schiefgeht, in einer Zeile erklärt. Trage einmal deine Branch-, Remote- und Dateinamen ein und kopiere fertige Befehle.

Aktualisiert am
Deine WerteJedes Beispiel unten aktualisiert sich beim Tippen

Einrichtung & Konfiguration

7
git config --global user.name "Ada Lovelace"

Legt den Autorennamen fest, der in deinen Commits gespeichert wird.

git config --global user.email "ada@example.com"

Legt die E-Mail-Adresse für deine Commits fest. Nimm am besten die, die mit deinem GitHub- oder GitLab-Konto verknüpft ist.

git config --global init.defaultBranch main

Legt den Namen des Standard-Branches für jedes neue Repository fest.

git config --global pull.rebase true

Lässt git pull deine lokalen Commits rebasen, statt Merge-Commits zu erzeugen.

git config --global core.editor "code --wait"

Verwende VS Code für Commit-Nachrichten und interaktive Rebases.

git config --global alias.lg "log --oneline --graph --decorate --all"

Fügt eine Kurzform git lg für einen kompakten Verlaufsgraphen hinzu.

git config --list --show-origin

Zeigt jede Einstellung und die Datei, aus der sie stammt. Praktisch, wenn eine Einstellung „nicht funktioniert“.

Repository anlegen

6
git init

Macht den aktuellen Ordner zu einem Git-Repository.

git clone git@github.com:acme/app.git

Lädt ein Repository mit der kompletten Historie herunter.

git clone --depth 1 git@github.com:acme/app.git

Shallow Clone nur mit dem neuesten Commit. Deutlich schneller bei großen Repositories und in CI.

git remote add origin git@github.com:acme/app.git

Verbindet ein lokales Repository mit einem Remote.

git remote -v

Listet Remotes und ihre Fetch- und Push-URLs auf.

git remote set-url origin git@github.com:acme/app.git

Ändert die URL eines Remotes, z. B. von HTTPS auf SSH.

Stagen & committen

12
git status -sb

Kurzer Status mit Branchname und dem Abstand zum Remote (voraus oder hinterher).

git add src/app.js

Stagt eine Datei für den nächsten Commit.

git add -p

Prüfe und stage Änderungen Hunk für Hunk. Der beste Weg für fokussierte Commits.

git add -A

Stagt alles: neue, geänderte und gelöschte Dateien.

git commit -m "Add login form"

Committet die gestagten Änderungen mit einer Nachricht.

git commit --amend --no-edit

Fügt die gestagten Änderungen dem letzten Commit hinzu und behält dessen Nachricht. Bei bereits gepushten Commits vermeiden.

git commit --amend -m "Better message"

Schreibt die Nachricht des letzten Commits neu.

git diff

Zeigt Änderungen, die noch nicht gestaged sind.

git diff --staged

Zeigt genau, was der nächste Commit enthalten wird.

git restore --staged src/app.js

Nimmt eine Datei aus dem Stage, behält deine Änderungen aber.

git restore src/app.js

destruktiv Verwirft nicht committete Änderungen an einer Datei und setzt sie auf den letzten Commit zurück.

git rm --cached src/app.js

Beendet das Tracking einer Datei (z. B. nach dem Eintrag in .gitignore), behält sie aber auf der Festplatte.

Branches

9
git branch -a

Listet lokale und Remote-Branches auf.

git switch -c feature/login

Legt einen neuen Branch an und wechselt direkt dorthin.

git switch feature/login

Wechselt zu einem bestehenden Branch.

git switch -

Springt zurück zu dem Branch, auf dem du vorher warst.

git branch -m feature/login

Benennt den aktuellen Branch um.

git branch --merged main

Listet Branches auf, die bereits in den Hauptbranch gemergt wurden. Die kannst du sicher löschen.

git branch -d feature/login

Löscht einen lokalen Branch, der bereits gemergt wurde.

git branch -D feature/login

destruktiv Löscht einen lokalen Branch erzwungen, auch wenn seine Commits nirgends gemergt sind.

git push origin --delete feature/login

destruktiv Löscht den Branch auf dem Remote.

Mit dem Remote synchronisieren

6
git fetch --all --prune

Lädt neue Commits herunter und entfernt Remote-Branches, die gelöscht wurden.

git pull

Holt den Upstream-Branch und integriert ihn in den aktuellen Branch.

git pull --rebase origin main

Setzt deine lokalen Commits auf den neuesten Stand von main neu auf.

git push -u origin feature/login

Pusht einen neuen Branch und setzt ihn als Upstream, damit spätere git push-Aufrufe ohne Argumente auskommen.

git push --force-with-lease

destruktiv Force-Push nach einem Rebase, aber abbrechen, wenn zwischenzeitlich jemand anderes gepusht hat. Deutlich sicherer als --force.

git push origin --tags

Pusht alle lokalen Tags.

Merge & Rebase

10
git merge feature/login

Mergt einen anderen Branch in den aktuellen.

git merge --no-ff feature/login

Erzeugt immer einen Merge-Commit, damit der Branch im Verlauf sichtbar bleibt.

git merge --squash feature/login

Stagt alle Änderungen eines Branches als eine Änderung, bereit für einen einzigen Commit.

git rebase main

Setzt die Commits deines Branches auf den neuesten main für einen linearen Verlauf.

git rebase -i HEAD~3

destruktiv Squasht, sortiert um, formuliert um oder entfernt die letzten N Commits interaktiv. Schreibt den Verlauf neu.

git rebase --continue

Setzt einen Rebase fort, nachdem du Konflikte gelöst und die Dateien gestaged hast.

git rebase --abort

Bricht einen Rebase ab und kehrt zum Ausgangspunkt zurück.

git merge --abort

Bricht einen Merge mit Konflikten ab.

git checkout --theirs src/app.js

Übernimmt bei einem Konflikt die eingehende Version einer Datei (--ours behält deine).

git cherry-pick a1b2c3d

Übernimmt einen einzelnen Commit aus einem anderen Branch in den aktuellen.

Rückgängig machen & Fehler beheben

9
git reset --soft HEAD~1

Macht den letzten Commit rückgängig, behält seine Änderungen aber gestaged.

git reset HEAD~1

Macht den letzten Commit rückgängig und behält seine Änderungen als ungestagte Edits.

git revert a1b2c3d

Erzeugt einen neuen Commit, der einen früheren rückgängig macht. Der sichere Weg auf geteilten Branches.

git reset --hard HEAD~1

destruktiv Löscht den letzten Commit und alle seine Änderungen.

git reset --hard origin/main

destruktiv Gleicht deinen lokalen Branch exakt an den Remote an und verwirft lokale Commits und Änderungen.

git reflog

Listet alle Commits auf, auf die HEAD zuletzt zeigte. So findest du „verlorene“ Commits nach einem fehlerhaften Reset oder Rebase.

git reset --hard HEAD@{1}

destruktiv Springt zurück zu dem Stand, auf dem HEAD vor dem letzten Reset, Rebase oder Checkout war.

git clean -nd

Zeigt eine Vorschau, welche nicht getrackten Dateien und Ordner git clean löschen würde.

git clean -fd

destruktiv Löscht nicht getrackte Dateien und Ordner. Führe vorher die -nd-Vorschau aus.

Stash

6
git stash push -m "wip: feature/login"

Legt nicht committete Änderungen mit einem Namen beiseite.

git stash -u

Stasht inklusive nicht getrackter Dateien.

git stash list

Listet alle Stashes auf.

git stash pop

Wendet den neuesten Stash wieder an und entfernt ihn aus der Liste.

git stash apply stash@{0}

Wendet einen Stash wieder an, behält ihn aber in der Liste.

git stash drop stash@{0}

destruktiv Löscht einen Stash endgültig.

Verlauf & Analyse

9
git log --oneline --graph --all

Kompakter Graph aller Branches.

git log -p -- src/app.js

Verlauf einer Datei mit dem Diff jeder Änderung.

git log --author="Ada Lovelace" --since="2 weeks ago"

Commits eines Autors in einem Zeitraum.

git log -S "functionName"

Findet Commits, die einen String hinzugefügt oder entfernt haben. Ideal für „Wann ist das verschwunden?“.

git blame -w src/app.js

Zeigt, wer jede Zeile zuletzt geändert hat, ohne reine Leerzeichenänderungen.

git show a1b2c3d

Zeigt die Nachricht und den Diff eines Commits.

git diff main...feature/login

Änderungen auf einem Branch seit dem Abzweigen von main. Genau das würde ein Pull Request zeigen.

git shortlog -sn

Anzahl der Commits pro Autor.

git bisect start
git bisect bad
git bisect good v1.2.0

Durchsucht den Verlauf binär nach dem Commit, der einen Bug eingeführt hat. Markiere jeden Schritt als gut oder schlecht und führe dann git bisect reset aus.

Tags & Releases

4
git tag -a v1.2.0 -m "Release v1.2.0"

Erstellt einen annotierten Tag für ein Release.

git push origin v1.2.0

Pusht einen einzelnen Tag.

git describe --tags --abbrev=0

Gibt den neuesten Tag aus.

git tag -d v1.2.0

destruktiv Löscht einen lokalen Tag.

Worktrees & Extras

4
git worktree add ../feature/login feature/login

Checkt einen anderen Branch in einem separaten Ordner aus. So arbeitest du an zwei Branches, ohne zu stashen.

git worktree list

Listet verknüpfte Worktrees auf.

git submodule update --init --recursive

Holt und checkt alle Submodule nach dem Klonen aus.

git archive --format=zip -o release.zip HEAD

Exportiert den aktuellen Tree als ZIP, ohne den .git-Ordner.

Deine Daten verlassen nie deinen Computer. Die Verarbeitung erfolgt zu 100 % lokal im Browser.

So nutzt du: Git Spickzettel

  1. Trage deine eigenen Werte (Branch, Remote, Datei, Commit) in die Felder oben ein. Jedes Beispiel auf der Seite aktualisiert sich sofort.
  2. Suche oder springe zu einem Abschnitt, um den Befehl zu finden, den du brauchst.
  3. Klicke auf Kopieren, um eine fertige Zeile zu kopieren, oder auf Abschnitt kopieren für einen kommentierten Block.
  4. Befehle mit destruktiv löschen oder überschreiben Daten. Lies den Hinweis, bevor du sie ausführst.

Der Git-Workflow in einer Minute

Die meiste Arbeit folgt demselben Ablauf: Branch anlegen mit git switch -c, Änderungen machen, mit git diff prüfen, mit git add -p stagen, committen und mit git push -u pushen. Bevor du einen Pull Request öffnest, aktualisiere deinen Branch mit git pull --rebase origin main, damit er sauber aufsetzt.

Befehle, die den Verlauf umschreiben

commit --amend, rebase, reset und push --force ändern bestehende Commits. Auf einem Branch, den nur du nutzt, ist das in Ordnung. Auf geteilten Branches zwingt es alle anderen, ihre Kopien zu reparieren. Dort machst du mit git revert rückgängig, und wenn du unbedingt force-pushen musst, nutze --force-with-lease.

30 Tage lang geht nichts verloren

Selbst nach einem fehlerhaften reset --hard oder Rebase ist committete Arbeit noch im Repository. git reflog zeigt, wo HEAD zuvor war, sodass du zu jedem kürzlichen Stand zurückkehren kannst. Nicht committete Änderungen sind die Ausnahme. Committe oder stashe deshalb häufig.

Erstelle Befehle für konkrete Situationen mit dem Git-Befehlsgenerator und lege neue Repositories mit dem .gitignore-Generator an.

Auch gesucht als: git befehle, git befehle liste, git referenz, git commit rückgängig, git rebase, git stash, git befehle mit beispielen.

Passende Tools zu: Git Spickzettel

  • Docker Spickzettel — Die Docker- und Docker-Compose-Befehle, die du jede Woche brauchst, in einer Zeile erklärt.
  • Linux Befehle Spickzettel — Die Linux- und Bash-Befehle, die Entwickler auf Servern und Laptops nutzen: Dateien, Suche, Berechtigungen, Prozesse, Logs, Netzwerk und SSH.
  • KI-Prompts für Entwickler — Erprobte Prompts für die Coding-Aufgaben, die du täglich erledigst: Debugging, Reviews, Tests, Refactoring, SQL, Commit-Messages und Dokumentation.
  • PowerShell Spickzettel — Die PowerShell-Befehle, die Entwickler und Admins unter Windows täglich nutzen — und in PowerShell 7 auf macOS und Linux — jeweils in einer Zeile erklärt.

Häufige Fragen

Was ist der Unterschied zwischen git fetch und git pull?
git fetch lädt neue Commits vom Remote herunter, verändert deinen Branch aber nicht. git pull holt sie und führt sie danach per Merge (oder Rebase) in deinen aktuellen Branch ein.
Wie mache ich den letzten Commit rückgängig?
Mit git reset --soft HEAD~1 machst du den Commit rückgängig und behältst die Änderungen gestaged. Ist der Commit schon auf einen geteilten Branch gepusht, nutze stattdessen git revert <commit>, damit niemandes Verlauf umgeschrieben wird.
Soll ich Merge oder Rebase verwenden?
Rebase deinen eigenen Feature-Branch auf main, damit der Verlauf linear und leicht lesbar bleibt. Nutze Merge (oder Squash-Merge), wenn du fertige Arbeit in einen geteilten Branch übernimmst. Rebase niemals Commits, die andere bereits gepullt haben.
Wie hole ich einen Commit zurück, der nach einem Reset verloren ging?
Führe git reflog aus, finde die Zeile von vor dem Reset und führe git reset --hard HEAD@{n} aus oder erstelle einen Branch vom Commit-Hash.
Kann ich Git Spickzettel als Web-App installieren und offline nutzen?
Ja. Git Spickzettel ist eine installierbare Web-App (PWA) – sie wird über Ihren Browser installiert und nicht aus einem App-Store heruntergeladen. Klicken Sie oben auf dieser Seite in Chrome oder Edge (Windows, macOS, Linux, ChromeOS) auf „App installieren“ oder verwenden Sie auf Android-Geräten „Teilen“ → „Zum Startbildschirm hinzufügen“ auf dem iPhone und iPad bzw. „Datei“ → „Zum Dock hinzufügen“ in Safari 17+ auf einem Mac. Die App öffnet sich dann in einem eigenen Fenster mit einem eigenen Symbol, und da sie vollständig in Ihrem Browser ausgeführt wird, funktioniert sie auch offline. Firefox auf dem Desktop kann keine Web-Apps installieren. So funktioniert die Installation.

Ähnliche Tools