Разница между git прикладом и приложением git

Я использовал git stash pop довольно долгое время. Недавно я узнал о команде git stash apply. Когда я это пробовал, он работал так же, как git stash pop.

В чем разница между git stash pop и git stash apply?

Ответ 1

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

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

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

Ответ 2

Получил эту полезную ссылку, в которой говорится о различии, как заявил Джон Звинк и недостаток Git stash pop.

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

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

Ответ 3

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

Ответ 4

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

Предполагая, что мы работаем над ветвью master и имеем файл hello.txt, который содержит строку "Hello".

Позвольте модифицировать файл и добавить к нему строку "world". Теперь вы хотите перейти на другую ветку, чтобы исправить незначительную ошибку, которую вы только что нашли, поэтому вам нужно stash изменить:

git stash

Вы перешли в другую ветку, исправили ошибку, и теперь вы готовы продолжить работу с веткой master, поэтому вы pop измените:

git stash pop

Теперь, если вы попытаетесь просмотреть содержимое stash, которое вы получите:

$ 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 больше похож на peek.

Ответ 5

Git Stash Pop vs apply Working

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

# apply the top stashed changes and delete it from git stash area.
git stash pop  

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

Примечание: Вы можете связать этот случай с методами pop() и peek() класса Stack, где pop изменяет верхнюю часть на уменьшение (top = top-1), но peek() может получить только верхний элемент.

Ответ 6

В git stash есть область хранения, куда могут быть перемещены текущие измененные файлы.

Область stash полезна, когда вы хотите извлечь некоторые изменения из репозитория git и обнаружить некоторые изменения в некоторых общих файлах, доступных в git repo.

git stash apply //apply the changes without removing stored files from stash area.

git stash pop  // apply the changes as well as remove stored files from stash area.

Примечание: - git apply только изменения из области хранилища, в то время как git pop применяется, а также удаляет изменения из области stash.