Git сховати двічі


94

Мені довелося швидко перемикати гілки git, тому я побіг git stash, але мені довелося запустити його знову, оскільки один із моїх файлів потребував редагування.

Отже, я git stashдвічі бігав , і я готовий повернутися до редагування своїх файлів. Я побіг, git stash applyале не впевнений, що всі файли, які я сховав, були нерозмита. Чи можу я щось зробити? Будь-який спосіб перевірити?

Коли я бігаю git stash show, я просто бачу останній із двох своїх сховищ git.

Чи є спосіб показати всіх git stashes?


4
git stash list. Якщо ви зробили два тайника, то телефонуйте git stash popдвічі.
Фелікс Клінг,

Привіт, ти це виправив! Ви повинні поставити це як відповідь. Велике спасибі
stephenmurdoch

Відповіді:


169

Ви можете отримати список усіх схованки з

git stash list

який покаже вам щось на зразок

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

Якщо ви зробили два заначки, то просто телефонуйте git stash popдвічі. На відміну від git stash apply, popзастосовує та видаляє найновіші схованки.

Ви також можете вказати конкретну схованку, наприклад

git stash show stash@{1}

або

git stash apply stash@{1}

Дуже дякую. Врятував мій день.
stephenmurdoch

25
Якщо ви хочете git stash popдвічі, тому що хочете обидва схованки в одному коміті, але у вас виникає "помилка: ваші локальні зміни в наступних файлах будуть перезаписані шляхом злиття:" на вашому 2-му git stash pop, тоді ви можете: 1) git stash pop, 2) git add .і 3 ) git stash pop.
gabe

Це мені допомогло. Мені потрібно було зробити "git stash", а потім "git stash --all", щоб сховати деякі нові файли, що не відслідковуються. Двічі робити git stash pop не працювало. Я отримав лише пізніше схованку назад.
Леопольд Крістіанссон,

0

Я зіткнувся з цією ситуацією, я зробив два схованки, а git stash pop просто розкреслив останній тайник. Так я і зробив

git stash list

git stash pop stash@{1}

Це розкрутило моє перше сховання, і я міг побачити всі свої зміни назад!


0

Ви поставили кілька різних запитань у дописі, а інші респонденти дали добрі відповіді на деякі з них. Найважливішим, але відповіді на який не отримали, є наступне:

>> Я не впевнений у тому, що всі файли, які я сховав, були нечищені. Чи можу я щось зробити? Будь-який спосіб перевірити?

Порівняйте схованку з місцевим деревом

Я думаю, що ви хочете зробити, це порівняти схованку з вашим місцевим робочим деревом . Ви можете поставити перемикач -p на команду stash, і все добре:

git stash show -p

Якщо вам потрібен конкретний, просто вкажіть його ім’я або ідентифікатор git зі списку сховищ:

git stash show -p stash@{3}

Може, використовувати різницю?

Якщо ви дійсно зацікавлені в просуванні своїх навичок Git, ви завжди можете піти на різницю. Щоб побачити різницю між тим, що знаходиться в схованці, і тим, що перевірено в HEAD на головній гілці, може бути використана така різниця:

git diff stash@ master

Ще одна акуратна команда, щоб показати вам зміни для елементів в історії зберігання, які можуть стати в нагоді, --stat:

git stash list --stat

Але я думаю, що проста відповідь - це правильна відповідь. Просто використовуйте перемикач -p, і ви, мабуть, побачите, чи не було повернуто схованку, яку ви відклали .

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