Stash @{1} неоднозначно?
Я пытаюсь получить информацию о моем stash, но git говорит мне, что [email protected]{0}
и [email protected]{1}
неоднозначны. git stash list
работает нормально, а .git/logs/refs/stash
похоже имеет соответствующий контент (не то, что я эксперт по внутренним git).
% git stash list
[email protected]{0}: On master: two
[email protected]{1}: On master: one
% git stash show [email protected]{1}
fatal: ambiguous argument '[email protected]': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Просто обычный git stash show
работает отлично. Итак, почему имена, которые git stash list
дают мне двусмысленным?
Ответы
Ответ 1
Ваша оболочка пожирает ваши фигурные скобки, поэтому, когда вы говорите [email protected]{1}
, git видит [email protected]
, и в этом нет никакого смысла. Заключите аргумент в кавычки (используйте git stash apply "[email protected]{1}"
или git stash apply [email protected]"{1}"
; цитирование в любом случае будет работать) или переконфигурируйте вашу оболочку, чтобы расширять только фигурные скобки, если между ними есть запятая (zsh можно настроить в любом случае, bash только расширяет фигурные скобки запятой) или расстояние между ними, другие оболочки могут вести себя так или иначе).
Ответ 2
Привет, у меня с тобой случилось то же самое. Самый простой способ исправить:
$ git stash apply [email protected]"{2}"
Я использую оболочку windows git.
Ответ 3
Если у вас есть эта ошибка при работе в 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)))
)
)
Это будет указывать {}
в третьем параметре в ("stash", "cmd", "[email protected]{0}")
, который выполняется magit-run-git
Ответ 4
Для пользователей zsh:
$ git stash apply [email protected]'{'1'}'
Ответ 5
Просто поместите идентификатор stash между простыми кавычками:
git stash apply '[email protected]{1}'