stash @ {1}含糊不清?

时间:2011-06-24 14:02:45

标签: git

我正在尝试获取有关我藏匿的信息,但是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给我的名字含糊不清?

4 个答案:

答案 0 :(得分:207)

你的shell正在吃大括号,所以当你说stash@{1}时,git会看到stash@1,这对它毫无意义。引用参数(使用git stash apply "stash@{1}")或重新配置你的shell只在它们之间有一个逗号时展开大括号(zsh可以用任何一种方式配置,bash只用逗号扩展大括号或它们之间的范围,其他shell可能表现一种或其他方式。)

答案 1 :(得分:23)

你好,我有同样的事情发生在我身上。最简单的解决方法是:

$ git stash apply stash@"{2}"

我正在使用windows git shell。

答案 2 :(得分:1)

如果在Windows上使用Magit在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中的第3个参数中的{{1}}引用

答案 3 :(得分:1)

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

git stash apply 'stash@{1}'