To see the difference between the current code and some stash's entry, you can run the following:
git stash show -p
You can specify a stash index too:
// git stash list
stash@{0}: First entry
stash@{1}: Second entry
stash@{2}: Third entry
stash@{3}: Fourth entry
stash@{4}: Fifth entry
git stash show -p 1 // Shows diff for stash@{1} // Second entry
You can run this command to save code into the stash with a specific message so
it's easier to differentiate multiple stash entries later (and even apply a
specific one by using git stash apply
):
git stash push -m "Custom Message"
Note: git stash save "Custom Message"
is deprecated, so I'd suggest to stick with git stash push
.
Let's suppose that you have the following entries in the stash:
// git stash list
stash@{0}: First entry
stash@{1}: Second entry
stash@{2}: Third entry
stash@{3}: Fourth entry
stash@{4}: Fifth entry
You can run git stash apply
with the index of the stash list as a parameter (starting with 0) to apply the entry "Third entry" from the stash:
git stash apply 2
This means that git stash pop
is equivalent to git stash apply 0
.
If you may want to apply some changes but keep them in the stash, you can run the following:
git stash apply
According to git
docs:
Like pop, but do not remove the state from the stash list
There's an issue that prevents to add a global configuration to disable pagination for git stash list
, so you can only do this on a per command basis:
git --no-pager stash list
This maybe be a bit cumbersome to repeat, so you can always create an alias for git stash list as I did:
alias gstl='git --no-pager stash list'
Now you can run gstl
to list your stash entries.
If you want to stash a specific file(s), you can append them on the git stash -m message
syntax:
git stash push -m "Custom Message" index.js package.json yarn.lock