问题
So here's what happened: I was on a branch 'A' and did a Git stash on that branch. Then I switched to another branch 'B'. I navigated back to Branch 'A' but did not do a Git stash pop. I switched to the master branch and then back to branch 'A'. I am trying to go a git stash pop now but cant seem to get my changes back.. I need to recover that code but whenever I do a git stash pop, my file changes are not listed. I did not commit any code.
Is there a way to recover the changes that I made? would really appreciate any help in this regards.
回答1:
Stashes should be viewable via
git stash list
or
gitk --all
also, git stash does not stash untracked files. If you did this and subsequently did a git checkout --force of another branch to overwrite untracked files with tracked ones in another branch, you have lost that content. The recommended way to stash is with
git stash -u
This will prevent losses of this type.
回答2:
We also faced the same issue. So, here is how we recovered the lost changes:
Go back to branch B.
git checkout B
Use
git reflogoption to mange reflog information.git reflog --all
Output:
f332d5c refs/stash@{0}: WIP on B: aa1d0c1 xyz commit message
Now, switch to branch A using
git checkout AFinally, to recover your lost changes.
git stash apply f332d5c
回答3:
Something similar happened to me. In short, check to make sure you didn't accidentally push the new files to the other branch.
Here's what happened to me: I stashed my stuff, switched from 'dev' to 'master' to do a hotfix quick. When I pushed my hotfix to master, I didn't notice that I also added my new files that were meant for dev to the master branch--I too assumed stash included those files.
来源:https://stackoverflow.com/questions/12147042/lost-git-stash-changes