Ответ 1
Я думаю, что filter-branch
сломал ваши приступы. Если аргумент git stash
не похож на сумку , вы получаете жалобу not a stash reference
.
Обратите внимание, что git show stashref
использует простой старый git show
, который не требует, чтобы коммит, данный как аргумент, напоминал приставку. Если git stash show
терпит неудачу так же, как и другие команды git stash
, или если ручное исследование рассматриваемого кошелька показывает, что он больше не выполняет слияние двух или трех родителей, это на самом деле так.
Вероятно, --prune-empty
сделал это здесь. Если вы не указали add
что-либо во время кошелька, фиксация индекса будет пустой. В общем случае, вероятно, разумнее избегать фильтрации ссылок на скрытие.
Вы можете попробовать два разных подхода:
- Восстановите исходный штамп SHA-1 (s) из
refs/original/
(гдеfilter-branch
оставил их) и/или reflogs; используйте те, которые нужно перестроитьrefs/stash
и/или блокировки stash, или использовать их напрямую, а затем clobber stash ref и его reflog. - Используйте только оставшееся дерево работы в перезаписанных записях. Все, что вам действительно нужно, поскольку индекс совершает ошибку, это то, что одно дерево дерева совершает. Вы можете получить патч, используя команду
git show
, которую вы уже выполнили.
(Немного больше о мешках с записями и сумками, включая трехмерную форму, используемую с --all
или --untracked
, см. Как восстановить из "git stash save --all" ?.)
Предполагая, что вы вернули свое содержимое и хотите полностью стереть ссылку stash
, это сделает это. Обратите внимание, что это параметр "nuke it from orbit" - не делайте этого, пока не убедитесь, что вы готовы:
git update-ref -d refs/stash