Я пытаюсь получить информацию о моем тайнике, но git говорит мне об этом 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
мне дают, считаются неоднозначными?
stash
, которая вызвала ошибку.stash
, вызывающий ошибку!Ответы:
Ваша оболочка съедает ваши фигурные скобки, поэтому, пока вы говорите
stash@{1}
, git видит,stash@1
и это не имеет для него никакого смысла. Процитируйте аргумент (используйтеgit stash apply "stash@{1}"
илиgit stash apply stash@"{1}"
; цитирование в любом случае будет работать) или перенастройте оболочку, чтобы расширять фигурные скобки только тогда, когда между ними есть запятая (zsh можно настроить в любом случае, bash только расширяет фигурные скобки запятой или диапазоном между ними, другое снаряды могут вести себя так или иначе).источник
(git stash drop stash@`{1`})
Привет, со мной случилось то же самое. Самый простой способ исправить это:
Я использую оболочку git для Windows.
источник
git stash apply "stash@{2}"
Если у вас возникла эта ошибка при работе в Emacs с Magit в Windows (как и у меня),
я надеюсь, что это быстрое решение поможет вам:
Это будет цитироваться
{}
в третьем параметре, в("stash", "cmd", "stash@{0}")
котором выполняетсяmagit-run-git
источник
Для пользователей zsh:
источник
Просто поместите идентификатор тайника между простыми кавычками:
источник