Ich denke, filter-branch
hat Ihre Verstecke gebrochen. Wenn das Argument git stash
nicht ausreichend ähnelt stash bag, erhalten Sie diese not a stash reference
Beschwerde.
Beachten Sie, dass git show stashref
einfache alte git show
verwendet, die nicht erfordert, dass ein als Argument übergebenes Commit einem Stash ähnelt. Wenn git stash show
auf die gleiche Weise wie die anderen git stash
Befehle fehlschlägt, oder wenn die manuelle Überprüfung des fraglichen Speichers zeigt, dass es nicht länger ein Merge Commit mit zwei oder drei Parents ist, dann ist dies tatsächlich der Fall.
Es war wahrscheinlich die --prune-empty
, die es hier getan hat. Wenn Sie zum Zeitpunkt des Stash nichts add
ed haben, wäre der Index-Commits leer. Im Allgemeinen ist es wahrscheinlich klüger, Filterreferenzen nicht zu filtern.
Sie können zwei verschiedene Ansätze versuchen:
- Wiederherstellen der ursprünglichen Vorrat SHA-1 (e) von
refs/original/
(wo filter-branch
sie links) und/oder reflogs; Verwenden Sie diese, um refs/stash
und/oder die Stash Reflogs neu zu erstellen, oder verwenden Sie sie direkt und dann clobber die Stash Ref und ihre Reflog.
- Verwenden Sie nur die verbleibenden Work-Tree-Commits in den neu geschriebenen Stashes. Alles was Sie wirklich brauchen, da die Index-Commits leer waren, ist dieser eine Work-Tree-Commit. Sie können einen Patch mit dem Befehl
git show
erhalten, den Sie bereits ausgeführt haben.
(Für ein bisschen mehr auf Vorrat und Stash Taschen, einschließlich der Form drei Eltern verwendet mit --all
oder --untracked
finden How to recover from “git stash save --all”?.)
Sie haben Angenommen, Ihre Inhalte zurück und wünschen bekommen die auszulöschen stash
Referenz ganz, das wird es tun. Beachten Sie, dass dies die "nuke it from orbit" Option-nicht es tun, bis Sie sicher sind, sind Sie bereit:
git update-ref -d refs/stash
Das hätte funktionieren sollen, sieht 'git reflog stash' gut aus? –
@ VlastimilOvčáčík: Ja 'git reflog stash' sah gut aus. –