Я использую в git stash pop
течение достаточно долгого времени. Я недавно узнал о git stash apply
команде. Когда я попробовал это, это, казалось, работало так же, как git stash pop
.
В чем разница между git stash pop
и git stash apply
?
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
с результатами, вы все равно получите ошибку конфликта.Получил эту полезную ссылку, в которой говорится о разнице, как заявил Джон Цвинк, и о недостатке
git stash pop
.Ссылка: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
источник
git stash pop
применяет верхний скрытый элемент и удаляет его из стека.git stash apply
делает то же самое, но оставляет его в стеке.источник
Видя это в действии, вы можете лучше понять разницу.
Предполагая, что мы работаем над
master
веткой и у нас есть файлhello.txt
, содержащий строку «Hello».Давайте изменим файл и добавим к нему строку "world". Теперь вы хотите перейти в другую ветку, чтобы исправить небольшую ошибку, которую вы только что нашли, поэтому вам нужно внести
stash
свои изменения:Вы перешли в другую ветку, исправили ошибку, и теперь вы готовы продолжить работу над своей
master
веткой, поэтому выpop
вносите изменения:Теперь, если вы попытаетесь просмотреть тайник, вы получите:
Однако, если вы используете
git stash apply
вместо этого, вы получите скрытый контент, но вы также сохраните его:Так
pop
же, как и в стеке - он на самом деле удаляет элемент после его извлечения, в то времяapply
как больше похож на peek .источник
В
git
stash находится область хранения, куда могут быть перемещены текущие измененные файлы.stash
Область полезна, когда вы хотите извлечь некоторые изменения изgit
репозитория и обнаружить некоторые изменения в некоторых общих файлах, доступных вgit
репо.источник
Git Stash
Pop vs apply
WorkingЕсли вы хотите применить свои самые последние изменения к текущим не поэтапным изменениям, а также удалить это хранение, то вам следует это сделать
git stash pop
.Но если вы хотите применить свои самые последние изменения к текущим не поэтапным изменениям, не удаляя их, тогда вам следует это сделать
git stash apply
.источник