Як Git приховувати поп-специфічну скриньку в 1.8.3?


290

Я щойно оновив Git. Я на Git версії 1.8.3.

Сьогодні вранці я спробував видалити зміну 1 глибоко в стеку.

Я побіг git stash pop stash@{1}і отримав цю помилку.

fatal: неоднозначний аргумент 'stash @ 1': невідома редакція або шлях не в робочому дереві. Використовуйте '-', щоб відокремити шляхи від редагувань, наприклад: 'git [...] - [...]'

Я спробував близько 20 варіацій цього, а також використовувати applyзамість того, щоб popне мати успіху. Що змінилося? Хтось ще стикається з цим?


2
Ви спробували втекти від {}?
AlexDev

20
З Git 2.11 (Q4 2016) тепер можна використовувати git stash pop 1: дивіться мою відповідь нижче
VonC

Відповіді:


360
git stash apply n

працює з версії 2.11 git

Оригінальна відповідь, можливо, допомагає налагоджувати проблеми зі старшим синтаксисом, що включає втечі оболонки:

Як було зазначено раніше, фігурні дужки можуть потребувати втечі чи котирування залежно від вашої ОС, оболонки тощо.

Дивіться " Невірно? {1} є неоднозначним? ", Щоб отримати докладні підказки, що може піти не так, і як обходити його в різних оболонках і платформах.

git stash list
git stash apply stash@{n}

git stash застосувати версію


15
Моя єдина нитка з цією відповіддю полягає в тому, що в запитанні задається питання про те, як задати popпевну скриньку, і ця команда applyвикористовує сховище, а не з'являється. Різниця полягає в тому, що попп одночасно застосовує скриньку до коду і видаляє саму скриньку.
Грант Хамфріс

Не працює для мене. Помилка отримання "невідомого варіанту: -encodedCommand"
Yuvraj Patil


Оновіть свою відповідь, її заразgit stash apply n
Хафіз Темурі


78

Якщо ви хочете бути впевненим не доведеться мати справу з цитатами для синтаксису stash@{x}, використовуйте Git 2.11 (Q4 2016)

Див. Запис A56c8f5 (24 жовтня 2016 р.) Від Аарона М Уотсона ( 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

5
Дякую! Це, мабуть, найбільш відповідна відповідь для тих, хто приїжджає сюди у 2019 році.
Аарон Фрірі


16

Як зазначав Роберт, лапки можуть зробити для вас трюк:

git stash pop stash@"{1}"

12

Якщо жоден з вищезазначених не працює, лапки навколо самої скриньки можуть працювати для вас:

git stash pop "stash@{0}"

4

У мене встановлено 2,22, і це спрацювало ..

git stash pop --index 1

Це не працює .. $ git stash pop --index 1 фатально: неоднозначний аргумент '1': невідома редакція або шлях не в робочому дереві. Використовуйте '-', щоб відокремити шляхи від редагувань, як-от так: 'git <command> [<revision> ...] - [<file> ...]'
Dave Doga Oz


1

Спочатку перевірте список: -

git stash list

скопіюйте індекс, який ви хотіли вивести зі списку скриньки

git stash pop stash@{index_number}

напр .:

git stash pop stash@{1}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.