Видя его в действии может помочь вам лучше понять разницу.
Предполагая, что мы работаем над веткой master
и имеем файл hello.txt
, содержащий строку «Hello».
Давайте изменим файл и добавим ему «мир». Теперь вы хотите, чтобы перейти на другую ветку, чтобы исправить небольшую ошибку, вы только нашли, так что вам нужно stash
изменения:
git stash
Вы переехали в другой ветви, исправлена ошибка, и теперь вы готов продолжить работу над вашей master
ветви, так что вы pop
изменения:
git stash pop
Теперь, если вы пытаетесь просмотреть содержание копить вы получите:
$ git stash show -p
No stash found.
Однако, если вы используете git stash apply
вместо этого, вы получите прятали содержание, но вы также будете держать его:
$ git stash show -p
diff --git a/hello.txt b/hello.txt
index e965047..802992c 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello
+Hello world
Так pop
это так же, как попы стеки - это на самом деле удаляет элемент после его совали, в то время как apply
больше похожа на peek.
как ответ на комментарий к briankip ниже, если есть конфликты при появлении кошелька, pop не удалит stash (и будет вести себя точно так же, как применять) – Kashif
@John Zwinck последняя строка более понятна, спасибо – Suresh
спасибо за этот комментарий @Kashif –