Разница между git stash pop и git stash apply



я использую git stash pop уже довольно давно. Я недавно узнал о

1333   4  

4 ответов:

git stash popвыбрасывает (самый верхний, по умолчанию) тайник после его применения, тогда как git stash applyоставляет его в списке заначку для возможного последующего использования (или вы можете тут git stash drop его).

это происходит, если нет конфликтов после git stash pop, в этом случае он не будет удалять тайник, ведя себя точно так же, как git stash apply.

другой способ взглянуть на это:git stash pop и git stash apply && git stash drop.

получил эту полезную ссылку, которая утверждает разницу, как заявил Джон Цвинк, и недостаток git stash pop.

например, предположим, что ваши скрытые изменения конфликтуют с другими изменениями, которые вы сделали с момента первого создания тайника. Как pop, так и apply помогут запустить режим разрешения конфликтов слияния, что позволит вам красиво разрешать такие конфликты... и ни один из них не избавится от тайника, хотя, возможно, вы ожидаете, что pop. Так много людей ожидайте, что тайники будут просто простым стеком, это часто приводит к тому, что они случайно выскакивают один и тот же тайник позже, потому что они думали, что он исчез.

Ссылка http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/

git stash pop применяет верхний скрытый элемент и удаляет его из стека. git stash apply делает то же самое, но оставляет его в стеке тайника.

видя его в действии может помочь вам лучше понять разницу.

предположим, что мы работаем над 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.

Comments

    Ничего не найдено.