Я использовал рабочий стол GitHub и восстановил тайник, который у меня был, но затем, когда я продолжил работу, я по ошибке перезаписал эти изменения таким образом, что их нельзя восстановить с помощью VS Code. (использовал crtl+z, чтобы вернуться в историю файлов, а затем по ошибке перезаписал эти изменения).
Есть ли способ вернуть тайник, даже если он не был выброшен?
Я на Windows 10, попробовал следующую команду, но я думаю, что она перечисляет только удаленные коммиты тайника: git fsck --no-reflogs | find "dangling commit"
В идеале мне нужен способ перечислить все последние коммиты тайника, независимо от того, были ли они удалены или восстановлены. Затем восстановить их с помощью git stash apply *hash*
.
В итоге : кнопка восстановления на картинке ниже — это то, на что я нажал, чтобы применить тайник к моему локальному репозиторию. Однако теперь, когда я потерял эти восстановленные изменения. Я хочу вернуть свой тайник, чтобы восстановить эти изменения, так как это кажется единственным способом, которым я могу это сделать.
Пробовал, но не помогло, я уже решил это, поделюсь решением, как только у меня будет время.
Вы должны спросить того, кто на самом деле проголосовал против. Я вижу отдельные подсчеты (+0, -1 => нет голосов за, один голос против), но не вижу, кто их сделал. Мое собственное предположение состоит в том, что кто-то подумал, что в самом вопросе слишком мало информации и/или что он избыточен по сравнению с существующими вопросами (но последний должен быть помечен как дубликат, а не отклонен). Учитывая, что вы работаете в Windows, я не думаю, что это точная копия: как вы показываете в своем ответе, вам понадобилось еще несколько инструментов.
Да, я добавил резюме, на всякий случай, если оно было недостаточно ясным. Спасибо за отзыв.
Мне удалось восстановить тайник с помощью следующих команд:
git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk
git show *hash*
, используя один из хэшей, перечисленных в предыдущей командеgit stash apply *hash*
.Обратите внимание, что я уже пробовал это, прежде чем публиковать вопрос о переполнении стека, но Windows не распознал эти команды, потому что они являются командами Linux. Чтобы решить эту проблему, я установил cygwin, который позволяет вам использовать команды Linux в Windows:
ls
. Если в нем перечислены ваши каталоги, папки и файлы, это означает, что ваша конфигурация прошла успешно.
git stash list
перечисляет невыпадающие тайники.