Отмена случайного git stash pop

Я спрятал некоторые локальные изменения, прежде чем делать сложное слияние, сделал слияние, а затем тупо забыл совершить транзакцию перед запуском git stash pop. Поп создал некоторые проблемы (плохие вызовы методов в большой базе кода), которые трудно отследить. Я побежал git stash show, поэтому я, по крайней мере, знаю, какие файлы были изменены. Если ничего другого, я думаю, это урок, чтобы совершить больше.

Мой вопрос: можно ли отменить всплывающее сообщение, не отменив слияние?

Ответ 1

Попробуйте использовать Как восстановить удаленный штамп в Git?, чтобы найти приложенный вами кошелек. Я думаю, что для кошелька всегда есть два коммита, поскольку он сохраняет индекс и рабочую копию (так часто фиксация индекса будет пустой). Затем git show их, чтобы увидеть diff и использовать patch -R, чтобы их не использовать.

Ответ 2

От git stash --help

Recovering stashes that were cleared/dropped erroneously
   If you mistakenly drop or clear stashes, they cannot be recovered through the normal safety mechanisms. However, you can try the
   following incantation to get a list of stashes that are still in your repository, but not reachable any more:

       git fsck --unreachable |
       grep commit | cut -d\  -f3 |
       xargs git log --merges --no-walk --grep=WIP

Это помогло мне лучше, чем принятый ответ с тем же сценарием.