Git stash twice
Solution 1
You can get a list of all stashes with
git stash list
which will show you something like
stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B
If 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}
Solution 2
I came across this situation, I did two stashes and git stash pop just 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!
Solution 3
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 -p
If 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@ master
Another neat command to show you changes for elements in the stash history that might come in handy is --stat:
git stash list --stat
But 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}
stephenmurdoch
Updated on January 03, 2021Comments
-
stephenmurdoch over 3 years
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 rangit 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
?-
Felix Kling over 10 years
git stash list
. If you made two stashes, then callgit stash pop
twice. -
stephenmurdoch over 10 yearsHi, you fixed it! You should put it as an answer. Thanks a lot
-
-
user3431501 about 9 yearsIf you want to
git stash pop
twice because you want both stashes in the same commit but you encounter "error: Your local changes to the following files would be overwritten by merge:" on your 2ndgit stash pop
, then you can: 1)git stash pop
, 2)git add .
, and 3)git stash pop
. -
Leopold Kristjansson over 4 yearsThis helped me. I needed to do "git stash" and then "git stash --all" to stash some new untracked files. Doing git stash pop twice was not working. I only got the later stash back.