I stashed some local changes before doing a complicated merge, did the merge, then stupidly forgot to commit before running git stash pop
. The pop created some problems (bad method calls in a big codebase) that are proving hard to track down. I ran git stash show
, so I at least know which files were changed. If nothing else, I guess this is a lesson to commit more.
My question: is it possible to undo the stash pop without also undoing the merge?
From 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
This helped me better than the accepted answer with the same scenario.
If your merge was not too complicated another option would be to:
After that you are left with only the changes from the stash you dropped too early.
Source: Stackoverflow.com