Как сбросить последний тайник, который был восстановлен, но затем по ошибке потерял содержащиеся в нем изменения?

Я использовал рабочий стол GitHub и восстановил тайник, который у меня был, но затем, когда я продолжил работу, я по ошибке перезаписал эти изменения таким образом, что их нельзя восстановить с помощью VS Code. (использовал crtl+z, чтобы вернуться в историю файлов, а затем по ошибке перезаписал эти изменения).

Есть ли способ вернуть тайник, даже если он не был выброшен? Я на Windows 10, попробовал следующую команду, но я думаю, что она перечисляет только удаленные коммиты тайника: git fsck --no-reflogs | find "dangling commit"

В идеале мне нужен способ перечислить все последние коммиты тайника, независимо от того, были ли они удалены или восстановлены. Затем восстановить их с помощью git stash apply *hash*.

В итоге : кнопка восстановления на картинке ниже — это то, на что я нажал, чтобы применить тайник к моему локальному репозиторию. Однако теперь, когда я потерял эти восстановленные изменения. Я хочу вернуть свой тайник, чтобы восстановить эти изменения, так как это кажется единственным способом, которым я могу это сделать.

Как сбросить последний тайник, который был восстановлен, но затем по ошибке потерял содержащиеся в нем изменения?

git stash list перечисляет невыпадающие тайники.
torek 16.03.2022 23:48

Пробовал, но не помогло, я уже решил это, поделюсь решением, как только у меня будет время.

coderdonezo 17.03.2022 02:28

Вы должны спросить того, кто на самом деле проголосовал против. Я вижу отдельные подсчеты (+0, -1 => нет голосов за, один голос против), но не вижу, кто их сделал. Мое собственное предположение состоит в том, что кто-то подумал, что в самом вопросе слишком мало информации и/или что он избыточен по сравнению с существующими вопросами (но последний должен быть помечен как дубликат, а не отклонен). Учитывая, что вы работаете в Windows, я не думаю, что это точная копия: как вы показываете в своем ответе, вам понадобилось еще несколько инструментов.

torek 17.03.2022 11:44

Да, я добавил резюме, на всякий случай, если оно было недостаточно ясным. Спасибо за отзыв.

coderdonezo 17.03.2022 11:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне удалось восстановить тайник с помощью следующих команд:

  • Команда для вывода списка всех потерянных/недоступных тайников, таких как коммиты 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:

  • Установите https://www.cygwin.com/ (Следуйте видео для установки и настройки: https://thewikihow.com/video_4zp7m7nkt-A)
  • Теперь можно использовать команды Linux в терминале Cygwin.
  • Чтобы иметь возможность использовать команды Linux в Windows, cmd. Убедитесь, что путь к папке bin доступен в переменных пути env.
  • Закройте все терминалы, а также рабочий стол GitHub, затем снова откройте командную строку Windows в корневой папке проекта и выполните команду ls. Если в нем перечислены ваши каталоги, папки и файлы, это означает, что ваша конфигурация прошла успешно.

Другие вопросы по теме