Отменить 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


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

15

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

git stash apply --index
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.