如何在1.8.3中git stash pop特定存储?

时间:2013-07-03 17:12:17

标签: git escaping pop git-stash

我刚刚升级了git。我正在使用git版本1.8.3。

今天早上我试图在堆栈的深处取消一个更改。

我跑git stash pop stash@{1}并收到此错误。

fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

我已经尝试了大约20多种变体以及使用apply代替pop但没有成功。改变了什么?其他人遇到过这个吗?

9 个答案:

答案 0 :(得分:219)

如前所述,大括号可能需要转义或引用,具体取决于您的操作系统,shell等。

有关可能出错的详细提示,以及如何在各种shell和平台中解决此问题,请参阅“stash@{1} is ambiguous?”。

git stash list
git stash apply stash@{n}

git stash apply version

答案 1 :(得分:144)

你需要逃避大括号:

git stash pop stash@\{1\}

答案 2 :(得分:53)

如果您想确保必须处理语法stash@{x}的引号,请使用Git 2.11(2016年第4季度)

commit a56c8f5Aaron M Watson (watsona4)(2016年10月24日) Junio C Hamano -- gitster --于2016年10月31日commit 9fa1f90合并)

  

stash:仅允许索引

引用stashes      

而不是引用&#34; stash@{n}&#34;明确地,使它成为可能   只需引用为&#34; n&#34;。
  大多数用户只根据他们在藏匿栈中的位置来引用存储(我称之为&#34;索引&#34;这里)。

     

典型存储(stash@{n})的语法有点烦人   容易忘记,有时难以正常逃脱   脚本

     

因此能够通过藏匿来做事   简单地引用索引是可取的。

所以:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1

答案 3 :(得分:47)

在Windows Powershell上运行:

git stash apply "stash@{1}"

答案 4 :(得分:15)

罗伯特指出,引号可能对你有用:

git stash pop stash@"{1}"

答案 5 :(得分:10)

如果以上都不起作用,藏匿处周围的引号可能对您有用:

git stash pop "stash@{0}"

答案 6 :(得分:4)

我已经安装了2.22,并且可以正常工作。

git stash pop --index 1

答案 7 :(得分:1)

2.11及更高版本使用以下命令:

git stash list

git stash apply n

n是隐藏@ {12}

答案 8 :(得分:0)

首先检查列表:-

git stash list

复制要从存储列表中弹出的索引

git stash pop stash@{index_number}

例如:

git stash pop stash@{1}