Поиск по сайту
Ctrl + K
Вопросы по Git

Какова разница между git stash pop и git stash apply?

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

git stash apply

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

# Сохранение изменений в stash
git stash

# Применение изменений из stash
git stash apply

Если у вас несколько изменений в stash, то вы можете указать, какое именно изменение хотите применить:

# Применение конкретного stash
git stash apply stash@{1}

git stash pop

Команда git stash pop также восстанавливает изменения из временного хранилища, но при этом удаляет элемент stash после успешного применения изменений. Это удобно, когда вы уверены, что не собираетесь использовать этот stash повторно. Например:

# Сохранение изменений в stash
git stash

# Применение изменений из stash с удалением stash
git stash pop

Главное отличие

Таким образом, основное отличие заключается в том, что git stash apply сохраняет stash, а git stash pop удаляет его после применения.

Пример использования

Предположим, вы работаете над новым функционалом, и у вас есть незавершенные изменения. Вы хотите проверить другую ветку, но не хотите их терять:

# Сохраняем изменения
git stash

# Переключаемся на другую ветку
git checkout feature-branch

# После работы на новой ветке
git checkout main

# Применяем сохраненные изменения без их удаления
git stash apply

Если же вы хотите просто применить изменения и не беспокоиться о том, что они останутся в stash, вы можете использовать pop:

# Сохраняем изменения
git stash

# Переключаемся на другую ветку
git checkout feature-branch

# После работы на новой ветке
git checkout main

# Применяем сохраненные изменения и удаляем stash
git stash pop

Заключение

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