Отменить git тайник

337

Я только что сделал тайник в проекте, который я не зафиксировал. Есть ли способ вернуться в состояние до того, как я спрятался? Как я мог это сделать? Я закрыл терминал, и мой ноутбук выключен. Я провел некоторые исследования, и, кажется, нет способа сделать это.

штольня
источник
Связанный пост здесь .
RBT

Ответы:

653

Вы можете просто запустить:

git stash pop

и это раскроет ваши изменения.

Если вы хотите сохранить состояние файлов (поэтапное и рабочее), используйте

git stash apply --index
Зияд-Сааб
источник
10
Ну, не совсем. Он не будет сбрасывать то, что находится в промежуточном каталоге, поэтому вам придется заново все это перенастроить (что может раздражать, если вы только что сделали сложный git add -p
Nick
Не работал для меня Я получил ошибку mymodule/MyClass.java: needs merge - unable to refresh index. Избегать ручного слияния было именно моей целью при использовании git stash pop...
TanguyP
Спас мою жизнь. Я думаю, что все мои изменения прошли, и мне нужно все снова. Спасибо
Анкит Шах
@TanguyP, так каково было ваше решение в конце?
theonlygusti
119

git stash list перечислить ваши спрятанные изменения.

git stash showчтобы увидеть, что nв приведенных ниже командах.

git stash apply применить самые последние тайники.

git stash apply stash@{n} применить более старый тайник.

http://git-scm.com/book/en/Git-Tools-Stashing

OmnipotentEntity
источник
1
также "git stash show" после "git stash list", чтобы завершить этот превосходный ответ и лучше определить, чем заменить n. Оказывается, у меня есть файлы, которые спрятаны от файлов, которые больше не существуют!
JimLohse
15

Это также восстановит промежуточный каталог:

git stash apply --index
wisbucky
источник