I had to quickly switch git branches, so I ran git stash, but I had to run it again because one of my files needed editing.
So I've run git stash twice, and I'm ready to go back to editing my files. I ran git stash apply but I'm not convinced that all of the files I had stashed were unstashed. Is there anything I can do? Any way to check?
When I run git stash show, I just see the last of my two git stashes.
Is there anyway to show all git stashes?
3 Answers
You can get a list of all stashes with
git stash listwhich will show you something like
stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message BIf you made two stashes, then just call git stash pop twice. As opposed to git stash apply, pop applies and removes the latest stash.
You can also reference a specific stash, e.g.
git stash show stash@{1}or
git stash apply stash@{1} 2 I came across this situation, I did two stashes andgit stash popjust unstashed last stash. So I did
git stash list
git stash pop stash@{1}This unstashed my first stash and I could see all my changes back!
You asked a few different questions in post, and other respondents gave good answers to some of them. The one that seems most important but hasn't been answered is this:
>>I'm not convinced that all of the files I had stashed were unstashed. Is there anything I can do? Any way to check?
Compare stash to local tree
I think what you want to do is compare the stash to your local working tree. You can put the -p switch on the stash command and you're good:
git stash show -pIf there's a particular one you're after, just use its git stash name or id from the stash list:
git stash show -p stash@{3}Maybe use the diff?
If you're really interested in pushing your git skills, you could always go for a diff. To see the difference between what's in the stash and whats checked into the HEAD on the master branch the following diff could be used:
git diff stash@ masterAnother neat command to show you changes for elements in the stash history that might come in handy is --stat:
git stash list --statBut I think the simple answer is the right answer. Just use the -p switch and you'll likely see if the stash you shelved has been popped back.
git stash show -p stash@{3}