приховування @ {1} неоднозначне?


122

Я намагаюся отримати інформацію про свою сховище, але 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мені дають, вважаються неоднозначними?


1
У моєму випадку я якось опинився з назвою гілки stash, яка викликала помилку.
Заз

І в моєму випадку у мене був віддалений ім'я stash, що спричинило помилку!
Роберт Мюїл

Відповіді:


231

Ваша шкаралупа їсть ваші фігурні дужки, тому, як ви говорите stash@{1}, git see stash@1і це не має сенсу для цього. Цитуйте аргумент (використовуйте git stash apply "stash@{1}"або git stash apply stash@"{1}"; цитування будь-якого способу спрацює) або перенастройте оболонку лише для розширення фігурних дужок, коли між ними є кома (zsh можна налаштувати будь-яким способом, bash лише розширює фігурні дужки з комою або діапазоном між ними, інше снаряди можуть вести себе так чи інакше).


1
@sehe: той, який нечасто використовується зараз. Цитується повідомлення про помилку вказує на це досить чітко (ні, здається, це не може бути башком).
Ян Худек

83
У Windows PowerShell теж поїсть дужки. Ви можете врятуватися від них за допомогою (git stash drop stash@`{1`})
бешкетника

8
Завдяки цьому трапляється з Рибами, не був впевнений, що відбувається.
Ілля Лінн

3
@Sergey використовує або stash @ `{0`} (backticks), або 'stash @ {0}' (окремі лапки) для PowerShell.
Ганс

4
О мій, через рік, і я знову прийшов до цього, тому що у мене виникли проблеми. Просто показує, як рідко я цим користуюся. Тоді, щоб побачити, я залишив коментар вище, що досить впевнено, каже, що це трапляється з Рибами. Занадто смішно.
Ілля Лінн

23

Привіт, там мені трапилось те саме. Найпростіший спосіб її виправити:

$ git stash apply stash@"{2}"

Я використовую оболонку Windows git.


2
Такожgit stash apply "stash@{2}"
rsenna

1
Працює для powerhell
rsenna

той же git stash застосувати "stash @ {2}" працював для мене, я отримував повідомлення "невідомого варіанту: -encodedCommand" при спробі git stash мого 3-го сховища, я використовував візуальний код студії, який має інтеграцію shellhell як його терміналу.
Раджан Чаухан

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)))
    )
  )

Це буде цитувати {}в третьому параметрі, в ("stash", "cmd", "stash@{0}")якому управляєтьсяmagit-run-git



1

Просто поставте скриньку id між простими цитатами:

git stash apply 'stash@{1}'

3
Як це відповідає на питання? У скриньці немає індексу №3. Якщо це серйозна відповідь, будь ласка, поясніть, чому ця команда вирішить проблему
Бред

Я відредагував свою відповідь для наочності: головна ідея полягала в тому, щоб просто поставити скриньку id між простими цитатами. Це стосується підкоманд «застосувати» або «упустити». Номер прихованого ідентифікатора насправді не має значення
Адріано

Хоча цей фрагмент коду може вирішити питання, зокрема пояснення дійсно допомагає покращити якість вашої публікації. Пам'ятайте, що ви відповідаєте на запитання читачів у майбутньому, і ці люди можуть не знати причини вашої пропозиції щодо коду.
DimaSan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.