Разница между git stash pop и git stash apply
я использую git stash pop
в течение некоторого времени. Недавно я узнал о
4 ответов
git stash pop
выбрасывает (самый верхний, по умолчанию) тайник после его применения, тогда как git stash apply
оставляет его в списке заначку для возможного последующего использования (или вы можете тут git stash drop
его).
это происходит, если нет конфликтов после git stash pop
, в этом случае он не будет удалять заначку, ведя себя точно так же, как git stash apply
.
другой способ взглянуть на это:git stash pop
is git stash apply && git stash drop
.
У этой полезной ссылке, что государства разница, как Джон Zwinck заявил и недостаток в Git Сташ поп.
например, скажите, что ваши скрытые изменения конфликтуют с другими изменениями, которые вы сделали с момента первого создания тайника. И pop, и apply помогут запустить режим разрешения конфликтов слияния, позволяя вам красиво разрешать такие конфликты... и ни один не избавится от тайника, хотя, возможно, вы ожидаете, что pop. Так много людей ожидайте, что тайники будут просто простой стопкой, это часто приводит к тому, что они случайно открывают тот же тайник позже, потому что они думали, что он исчез.
ссылка http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
git stash pop
применяет верхний скрытый элемент и удаляет его из стека. git stash apply
делает то же самое, но оставляет его в стеке тайника.
видя его в действии может помочь вам лучше понять разницу.
предположим, что мы работаем над master
филиала и , который содержит строку "Hello".
Давайте изменим файл и добавим к нему строку" world". Теперь вы хотите перейти в другую ветку, чтобы исправить незначительную ошибку, которую вы только что нашли, поэтому вам нужно 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
так же, как pop стека-он фактически удаляет элемент, как только он выскочил, в то время как apply
больше нравится ку.