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