Как git stash pop специфический stash в 1.8.3?

Я только что обновил Git. Я на git версии 1.8.3.

Этим утром я попытался развернуть изменение 1 глубоко в стеке.

Я побежал git stash pop stash@{1} и получил эту ошибку.

fatal: ambiguous argument 'stash@1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Я пробовал около 20+ вариантов, а также с помощью apply вместо pop без успеха. Что изменилось? Кто-нибудь еще сталкивался с этим?

10 ответов

Решение

Как указывалось ранее, фигурные скобки могут потребовать экранирования или цитирования в зависимости от вашей ОС, оболочки и т. Д.

Посмотрите " stash @ {1} является неоднозначным?" Для некоторых подробных подсказок о том, что может идти не так, и как обойти это в различных оболочках и платформах.

git stash list
git stash apply stash@{n}

git stash применить версию

Вам нужно избежать скобок:

git stash pop stash@\{1\}

Если вы хотите быть уверены, что не нужно иметь дело с кавычками для синтаксиса stash@{x}, используйте Git 2.11 (4 квартал 2016 года)

См. Коммит a56c8f5 (24 октября 2016 г.) от Aaron M Watson ( watsona4 )
(Объединено Юнио С Хамано - gitster - в коммите 9fa1f90, 31 октября 2016 г.)

stash: разрешить ссылки на тайники только по индексу

Вместо ссылки " stash@{n} "явно, сделать возможным просто ссылаться как" n ".
Большинство пользователей ссылаются на тайники только по их положению в стеке тайников (что я называю здесь "индексом").

Синтаксис для типичного тайника (stash@{n}) немного раздражает и его легко забыть, а иногда и трудно избежать в сценарии.

Из-за этого желательна возможность делать вещи с тайником, просто ссылаясь на индекс.

Так:

git stash drop 1
git stash pop 1
git stash apply 1
git stash show 1

В Windows Powershell я запускаю это:

git stash apply "stash@{1}"

Как отметил Роберт, кавычки могут помочь вам:

git stash pop stash@"{1}"

Если ничего из вышеперечисленного не сработало, кавычки вокруг самого тайника могут сработать:

git stash pop "stash@{0}"

У меня установлен 2.22, и это сработало..

git stash pop --index 1

Версия 2.11+ использует следующее:

git stash list

git stash apply n

n - номер тайника @{12}

Сначала проверьте список:-

git stash list

скопируйте индекс, который вы хотите получить из списка тайников

git stash pop stash@{index_number}

например.:

git stash pop stash@{1}

Я видел этот ответ несколько раз в этом списке, но просто для ясности, по крайней мере, с версии git 2.33.0, git stash pop stash@{n} . _ действителенНет необходимости бежать.

Другие вопросы по тегам