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