Was ist eine Ref
Eine Ref ist ein Name, der auf ein Objekt zeigt — meist auf einen Commit. Branches sind Refs unter refs/heads/, Tags unter refs/tags/, Remote-Tracking unter refs/remotes/, und Pseudo-Refs wie HEAD, FETCH_HEAD, ORIG_HEAD.
Refs inspizieren
git for-each-ref
git for-each-ref --sort=-committerdate --format='%(refname:short) %(committerdate:relative)' refs/heads
git symbolic-ref HEAD
git update-ref refs/heads/foo <sha>
Das Reflog
git reflog
git reflog show feature
git reflog show HEAD@{2.weeks.ago}
git log -g --oneline
git checkout HEAD@{1}
git branch rescue HEAD@{5}
Reflog-Ablauf
git config gc.reflogExpire never
git config gc.reflogExpireUnreachable 60.days
Spezielle Pseudo-Refs
HEAD, ORIG_HEAD, FETCH_HEAD, MERGE_HEAD.
Reftable-Backend
git init --ref-format=reftable
Haufige Fehler
Reflog ewig vertrauen: es lauft ab.