Git 隐藏{1}是不明确的?

Git 隐藏{1}是不明确的?,git,Git,我试图获取有关我的藏品的信息,但git告诉我,stash{0}和stash{1}是不明确的git stash list工作正常,.git/logs/refs/stash似乎有适当的内容(我不是git内部结构方面的专家) 只需简单的git隐藏秀就可以了。那么,为什么git stash list给我的名字被认为是模棱两可的呢?你的外壳吃掉了你的花括号,所以当你说stash{1}时,git看到了stash@1这对它来说毫无意义。引用参数(使用git stash apply“stash{1}”或git

我试图获取有关我的藏品的信息,但git告诉我,
stash{0}
stash{1}
是不明确的
git stash list
工作正常,
.git/logs/refs/stash
似乎有适当的内容(我不是git内部结构方面的专家)


只需简单的
git隐藏秀
就可以了。那么,为什么
git stash list
给我的名字被认为是模棱两可的呢?

你的外壳吃掉了你的花括号,所以当你说
stash{1}
时,git看到了
stash@1
这对它来说毫无意义。引用参数(使用
git stash apply“stash{1}”或
git stash apply stash{1}”或
git stash apply stash{1}”
;引用任何一种方法都有效)或重新配置shell,使其在括号之间有逗号时仅展开花括号(zsh可以任意配置,bash只在括号中用逗号或范围展开,其他Shell可能以这种或其他方式运行)。

如果在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
运行。在那里,我遇到了同样的情况。最简单的修复方法是:

$ git stash apply stash@"{2}"
我正在使用windows git shell。

对于zsh用户:

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

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

git stash apply 'stash@{1}'

@sehe:目前使用的一个不常见的方法。引用的错误消息非常清楚地表明了这一点(不,似乎不是bash)。在Windows上,PowerShell也会吃括号。你可以用反勾
(git stash drop stash@`{1`})
谢谢Fish发生了这种情况,我不确定发生了什么。@Sergey使用任意一个stash@{0`}(反勾号)或“隐藏”{0}(单引号)对于PowerShell。噢,天哪,一年多之后,我再次谈到这个问题,因为我遇到了一个问题。我只是展示了我很少使用这个。然后看到我在上面留下了一条评论,肯定是这样的,说它发生在Fish身上。太有趣了。在我的例子中,不知何故,我最终得到了一个名为
stash
的分支,这是导致错误的原因。在我的例子中,我有一个错误远程命名为
stash
,导致错误!这是如何回答问题的?stash列表中没有#3索引。如果这是一个严肃的答案,请解释为什么此命令可以解决此问题。为了清楚起见,我编辑了我的答案:主要思想是简单地将stash id放在简单的引号之间。它适用于“应用”或“删除”子命令。The stash id number实际上并不重要。虽然此代码片段可以解决此问题,但确实有助于提高您的文章质量。请记住,您是在将来为读者回答此问题,而这些人可能不知道您的代码建议的原因。另外,
git stash apply“stash@{2}”
适用于powershell同样的git stash apply“stash@{2}”适用于我,我在尝试git隐藏我的第三个存储时收到“unknown option:-encodedCommand”消息,我使用的visual studio代码将powershell集成为其终端。
git stash apply 'stash@{1}'