How to undo git stash clear
As it may be found in the documentation of git stash, you may be lucky if this works:
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
If you find the stash you cleared by mistake, then you can do:
git stash apply <stash>
EDIT: Use this command instead git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk --grep=WIP
All of the above answers end with a git stash apply [commit]
which is good, but is not an exact undo of git stash clear
. For that you need to re-stash the orphaned stash-commit. I found these instructions which almost worked but needed a flag to get all the way there. Summarizing:
- Find the orphaned stash commits:
git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk
- Re-stash the commit:
git update-ref --create-reflog refs/stash 4b3fc45c94caadcc87d783064624585c194f4be8 -m "My recover stash"