存储@ {1}是不明确的?

我试图获得有关我的藏匿的信息,但混帐告诉我, 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的名称让我觉得模糊?

你的shell正在吃掉你的大括号,所以当你说stash@{1} ,git会看到stash@1 ,这是没有意义的。 引用参数(使用git stash apply "stash@{1}" ),或者重新configuration你的shell只在它们之间有一个逗号的时候展开大括号(zsh可以用任何一种方式configuration,bash只用逗号或范围来扩展大括号他们,其他贝壳可能performance一个或其他方式)。

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

 $ git stash apply stash@"{2}" 

我正在使用一个Windows Gitshell。

如果你在使用Windows上的Magit的Emacs(像我一样)时出现这个错误,
我希望这个快速解决scheme能帮助你:

 (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))) ) ) 

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

对于zsh用户:

 $ git stash apply stash@'{'1'}' 

简单地在简单的引号之间加上stash id:

 git stash apply 'stash@{1}'