stash @ {1}是不明确的?


122

我试图让我的藏匿信息,但Git是告诉我,stash@{0}stash@{1}含糊不清。git stash list工作正常,并且.git/logs/refs/stash似乎具有适当的内容(不是我是git内部的专家)。

% git stash list
stash@{0}: On master: two
stash@{1}: On master: one
% git stash show stash@{1}
fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

只是普通的git stash show工作正常。那么为什么git stash list给我的名字模棱两可?


1
就我而言,我最终会以一个名为的分支结束stash,这导致了错误。
Zaz 2014年

在我的情况下,我有一个名为的远程服务器stash,导致错误!
罗伯特·穆伊

Answers:


231

您的外壳在吃大括号,所以当您说时stash@{1},git看到了stash@1,这对它毫无意义。引用参数(使用use git stash apply "stash@{1}"git stash apply stash@"{1}";引用任何一种方式都可以)或重新配置外壳以仅在括号之间有逗号时才扩展大括号(zsh可以以任何方式配置,bash仅使用逗号或它们之间的范围扩展大括号,其他方式壳可能表现为一种或其他方式)。


1
@sehe:目前不常用的一种。引用的错误消息非常清楚地表明了这一点(不,看来它不能成为bash)。
Jan Hudec

83
在Windows上,PowerShell也会吃括号。你可以用反引号进行转义(git stash drop stash@`{1`})
泽维尔Poinas

8
由于Fish发生了这种情况,所以不确定发生了什么。
伊利亚·林恩2014年

3
@Sergey对PowerShell使用stash @`{0`}(反引号)或'stash @ {0}'(单引号)。
汉斯(Hans)

4
哦,我的,一年多以后,由于遇到问题,我又回到了这个问题。仅显示我很少使用此功能。然后看到我在此之上留下了足够肯定的评论,说这与Fish相同。太好笑了。
伊利亚·林恩

23

嗨,我也发生了同样的事情。最简单的解决方法是:

$ git stash apply stash@"{2}"

我正在使用Windows git shell。


2
另外git stash apply "stash@{2}"
rsenna

1
适用于
Powershell

相同的git stash应用“ stash @ {2}”对我有用,当我尝试git隐藏第3个stash时,我收到“未知选项:-encodedCommand”消息,我使用的是Visual Studio代码,该代码具有Powershell集成作为终端。
Rajan Chauhan

1

如果在Windows上使用Magit在Emacs中使用Emacs时遇到此错误(像我一样)
,希望这种快速解决方案对您有所帮助:

(if (eq system-type 'windows-nt)
    (defadvice magit-run-git (before magit-run-git-win-curly-braces (&rest args) activate)
      "Escape {} on Windows"
      (setcar (nthcdr 2 args) 
              (replace-regexp-in-string "{\\([0-9]+\\)}" "\\\\{\\1\\\\}" (elt args 2)))
    )
  )

这将引用{}("stash", "cmd", "stash@{0}")其中运行的第三个参数magit-run-git



1

只需将隐藏标识放在简单引号之间:

git stash apply 'stash@{1}'

3
这如何回答这个问题?存储列表中没有#3索引。如果这是一个严肃的答案,请解释为什么此命令将解决问题
Brad

为了清楚起见,我编辑了答案:主要思想是将隐藏ID放在简单引号之间。它适用于“ apply”或“ drop”子命令。藏匿ID编号实际上并不重要
Adriano

尽管此代码段可以解决问题,但提供说明确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。
DimaSan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.