How to Git stash pop specific stash in 1.8.3?

GitEscapingGit Stash

Git 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJesse AtkinsonView Question on Stackoverflow
Solution 1 - GitBob GilmoreView Answer on Stackoverflow
Solution 2 - GitVasiliyView Answer on Stackoverflow
Solution 3 - GitVonCView Answer on Stackoverflow
Solution 4 - GitRobert BrookerView Answer on Stackoverflow
Solution 5 - GitowenmckView Answer on Stackoverflow
Solution 6 - GitKenanView Answer on Stackoverflow
Solution 7 - Gitmanish kumarView Answer on Stackoverflow
Solution 8 - GitmarkgView Answer on Stackoverflow
Solution 9 - GitJabbi SyedView Answer on Stackoverflow
Solution 10 - GitPaulBunionView Answer on Stackoverflow