git stash@{1}不明确?

qfe3c7zg  于 2023-10-14  发布在  Git
关注(0)|答案(5)|浏览(107)

我试图获取关于我的存储的信息,但git告诉我stash@{0}stash@{1}是不明确的。git stash list工作正常,.git/logs/refs/stash似乎有适当的内容(并不是说我是git内部的Maven)。

% 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给我的名字被认为是模棱两可的呢?

xkftehaa

xkftehaa1#

你的shell正在吃掉你的花括号,所以当你说stash@{1}时,git看到的是stash@1,这对它来说毫无意义。引用参数(使用git stash apply "stash@{1}"git stash apply stash@"{1}";用两种方式都可以),或者重新配置shell,只在大括号之间有逗号的时候才展开大括号(zsh可以用两种方式中的任何一种来配置; bash只会用逗号或范围来扩展花括号,而其他shell可能会有不同的行为)。

af7jpaap

af7jpaap2#

我也经历过同样的事情。我发现最简单的解决方法是:

$ git stash apply stash@"{2}"

我使用的是Windows Git shell。

pgpifvop

pgpifvop3#

简单地将stash id放在简单的引号之间:

git stash apply 'stash@{1}'
bmp9r5qi

bmp9r5qi4#

如果你在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)))
    )
  )

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

6yjfywim

6yjfywim5#

对于zsh用户:

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

相关问题