Skip to content

Git Reset, Revert und Checkout erklärt

Einführung

Richtiges „Undo“ vermeidet Datenverlust und historische Inkonsistenz. Vergleich von reset, revert, checkout (plus restore / switch).

Schnellvergleich

KommandoWirkungHistorie umgeschrieben?Typischer Zweck
resetBewegt Branch-Ref / IndexJa (nur lokal)Lokale Commits neu ordnen
revertNeuer Commit kehrt Patch umNeinÖffentliches Undo
checkout (Datei)Working Tree ersetzenNeinLokale Änderungen verwerfen
checkout (Branch)HEAD wechselnNeinBranch-Switch
restoreModerne DateiwiederherstellungNeinSicheres Unstage/Restore
switchModerner BranchwechselNeinKlarere Semantik

Reset Modi

bash
git reset --soft HEAD~1
git reset --mixed HEAD~1   # Default
git reset --hard HEAD~1

Soft: Inhalte gestaged lassen. Mixed: entstagen. Hard: alles verwerfen.

Branch-Pointer verschieben

bash
git reset --hard <commit>

Nicht auf geteilten Branches!

Letzten Commit ändern

bash
git commit --amend -m "Refine API error handling"

Nach Push nur mit Absprache.

Revert

bash
git revert <commit>
git revert <old>..<new>

Merge Revert:

bash
git revert -m 1 <merge-hash>

Lokale Dateiänderungen verwerfen

bash
git restore path/file.txt
# Unstage
git restore --staged path/file.txt

(Alt: git checkout -- file)

Branch wechseln

bash
git switch main
git switch -c feature/new-dashboard

Verlorene Commits retten

bash
git reflog
git checkout <hash>
git switch -c recovery/<topic>

Interaktives Rebase für Cleanup

bash
git rebase -i HEAD~5

Entscheidungshelfer

SituationVerwende
Letzte 2 Commits neu bündelngit reset --soft HEAD~2 + amend
Öffentliches Undogit revert <hash>
Unstaged Änderungen verwerfengit restore <file>
Falsch gestagedgit restore --staged <file>
Lokal zu gutem Stand zurückgit reset --hard <hash>
Alten Commit inspizierengit checkout <hash>

Sicherheits-Tipps

  1. Mit --hard vorsichtig (vorher stash?)
  2. Öffentlich = revert statt reset
  3. Branches als Sicherheitsnetz
  4. reflog kennen

Zusammenfassung

Wähle minimal invasive Option: Reset (Schreiben), Revert (additiver Undo-Commit), Restore/Checkout (Arbeitsbaum).

Nächste Schritte

  • Stash
  • Hooks & Automation

Key Commands

bash
git reset --soft|--mixed|--hard <ref>
git revert <commit>
git restore [--staged] <file>
git reflog