Отмена случайного 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
Это помогло мне лучше, чем принятый ответ с тем же сценарием.