приховування @ {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.