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}'