Тайник @{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
дает мне считать неоднозначным?
5 ответов
Твоя раковина пожирает твои фигурные скобки, так что пока ты говоришь stash@{1}
мерзавец видит stash@1
и это не имеет смысла для этого. Цитировать аргумент (используйте git stash apply "stash@{1}"
) или переконфигурируйте вашу оболочку, чтобы расширять только фигурные скобки, если между ними есть запятая (zsh можно настроить в любом случае, bash расширяет только фигурные скобки с запятой или диапазоном между ними, другие оболочки могут вести себя так или иначе).
Привет, со мной случилось то же самое. Самый простой способ исправить это было:
$ git stash apply stash@"{2}"
Я использую оболочку Windows Gi t.
Просто поместите идентификатор тайника между простыми кавычками:
git stash apply 'stash@{1}'
Если у вас есть эта ошибка при работе в Emacs с Magit на Windows (как я)
Я надеюсь, что это быстрое решение поможет вам:
(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)))
)
)
Это будет цитата {}
в 3-м параметре в ("stash", "cmd", "stash@{0}")
который управляется magit-run-git