git reflog

Untersuchen & Vergleichen

Zeigt, wo HEAD und die Branches schon waren


Der Befehl 'git reflog' listet jede Position, die HEAD hatte: jeden Commit, Wechsel, Reset, Merge und Rebase, die neueste zuerst. Er ist lokal in deinem Repository und das Sicherheitsnetz für verlorene Arbeit — Commits, die ein Reset oder Rebase von einem Branch entfernt hat, stehen noch darin und lassen sich mit HEAD@{n} zurückholen. Einträge verfallen standardmäßig nach 90 Tagen.

Syntax

git reflog [show] [<log-options>] [<ref>]
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (1)

Begrenzt die Liste auf die n neuesten Einträge (auch -<n> geschrieben).

EmpfohlenDie neuesten Einträge sind meist die, die du brauchst

Beispiel

git reflog -n 5

Die richtige Option wählen

log oder reflog

Zwei Historien

BefehlListetGeteilt?
git logCommits, die von einem Branch erreichbar sindJa, mit den Commits
git reflogJede Bewegung von HEAD, auch zu Commits, die kein Branch hatNein, nur lokal

Beispiele

Bewegungen von HEAD auflisten

git reflog

Die neueste zuerst, mit Namen HEAD@{n}.


Einen Reset rückgängig machen

git reset --hard HEAD@{1}

Zurück dorthin, wo HEAD eine Bewegung zuvor war.


Reflog eines Branches

git reflog show main

Nur die Bewegungen von main.

Workflow-Beispiele

1
git reflog

Den Eintrag vor dem Reset finden

2
git reset --hard HEAD@{1}

Dorthin zurückgehen

1
git reflog

Den letzten Commit dieses Branches finden

2
git switch -c feature/login a1b2c3d

Den Branch dort neu erstellen

Fehlerbehebung

Der Commit ist nicht im Reflog

Ursache: Er wurde hier nie ausgecheckt, oder der Eintrag ist verfallen

Versuche git fsck --lost-found für verwaiste Commits

HEAD@{1} zeigt an eine unerwartete Stelle

Ursache: Jeder Branch-Wechsel zählt auch als Bewegung

Lies den Reflog und wähle den genauen Eintrag

Tipps & Stolperfallen

Best Practices

  • ✓Prüfe git reflog, bevor du wegen verlorener Commits in Panik gerätst.
  • ✓Stelle zuerst auf einem neuen Branch wieder her (git switch -c rescue <hash>), um gefahrlos nachzusehen.

Häufige Fehler

  • ✗Glauben, ein reset --hard habe Commits endgültig gelöscht — der Reflog hat sie noch.
  • ✗Zu lange warten: unerreichbare Commits verschwinden, wenn Reflog-Einträge verfallen und git gc läuft.
  • ✗Den Reflog auf einem anderen Rechner erwarten — er wird nie gepusht oder geklont.

FAQ

A:

Standardmäßig 90 Tage für erreichbare, 30 Tage für unerreichbare Einträge.

A:

Nein, es listet nur. Einträge entfernen git reflog expire und delete.