How to Git stash pop specific stash in 1.8.3?
GitEscapingGit StashGit Problem Overview
I just upgraded Git. I'm on Git version 1.8.3.
This morning I tried to unstash a change 1 deep in the stack.
I ran git stash pop stash@{1}
and got this error.
> fatal: ambiguous argument 'stash@1': unknown revision or path not in
> the working tree.
> Use '--' to separate paths from revisions, like this:
> 'git
I've tried about 20+ variations on this as well as using apply
instead of pop
with no success. What's changed? Anyone else encounter this?
Git Solutions
Solution 1 - Git
git stash apply n
works as of git version 2.11
Original answer, possibly helping to debug issues with the older syntax involving shell escapes:
As pointed out previously, the curly braces may require escaping or quoting depending on your OS, shell, etc.
See "https://stackoverflow.com/questions/6468893/stash1-is-ambiguous" for some detailed hints of what may be going wrong, and how to work around it in various shells and platforms.
git stash list
git stash apply stash@{n}
https://stackoverflow.com/questions/1910082/git-stash-apply-version/1910142#1910142
Solution 2 - Git
You need to escape the braces:
git stash pop stash@\{1\}
Solution 3 - Git
If you want to be sure to not have to deal with quotes for the syntax stash@{x}
, use Git 2.11 (Q4 2016)
See commit a56c8f5 (24 Oct 2016) by Aaron M Watson (watsona4
).
(Merged by Junio C Hamano -- gitster
-- in commit 9fa1f90, 31 Oct 2016)
> ## stash
: allow stashes to be referenced by index only
> Instead of referencing "stash@{n}
" explicitly, make it possible to
simply reference as "n
".
Most users only reference stashes by their position in the stash stack (what I refer to as the "index" here).
> The syntax for the typical stash (stash@{n}
) is slightly annoying and
easy to forget, and sometimes difficult to escape properly in a
script.
> Because of this the capability to do things with the stash by simply referencing the index is desirable.
So:
git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1
Solution 4 - Git
On Windows Powershell I run this:
git stash apply "stash@{1}"
Solution 5 - Git
As Robert pointed out, quotation marks might do the trick for you:
git stash pop stash@"{1}"
Solution 6 - Git
If none of the above work, quotation marks around the stash itself might work for you:
git stash pop "stash@{0}"
Solution 7 - Git
Version 2.11+ use the following:
git stash list
git stash apply n
n is the number stash@{12}
Solution 8 - Git
I have 2.22 installed and this worked..
git stash pop --index 1
Solution 9 - Git
First check the list:-
git stash list
copy the index you wanted to pop from the stash list
git stash pop stash@{index_number}
eg.:
git stash pop stash@{1}
Solution 10 - Git
I've seen this answer a few times in this list, but just to be explicitly clear, at least as of git version 2.33.0, git stash pop stash@{n}
is valid. No escaping necessary.