git stash — Временное сохранение работы
Команда git stash сохраняет ваши незафиксированные изменения и восстанавливает чистую рабочую директорию. Это как положить работу на полку, чтобы вернуться к ней позже.
Когда использовать stash
- Вам нужно переключить ветку, но есть незафиксированные изменения
- Вы хотите подтянуть обновления, но у вас есть локальные изменения
- Вы хотите быстро протестировать что-то в чистом состоянии
Основные команды
git stash— Сохранить изменения и очистить рабочую директориюgit stash pop— Восстановить последний stash и удалить егоgit stash list— Показать все сохранённые записиgit stash drop— Удалить последний stash без применения
Как это работает
Рабочая дир. (грязная) → git stash → Рабочая дир. (чистая)
↓
Стек stash
[stash@{0}]
[stash@{1}]
[stash@{2}]
Записи stash хранятся в стеке — последним пришёл, первым вышел.
Попробуйте!
Попрактикуйтесь в сохранении и восстановлении:
- Создайте и закоммитьте файл:
echo "base" > work.txt && git add work.txt && git commit -m "Add work" - Внесите изменения:
echo "in progress" > work.txt - Сохраните изменения в stash:
git stash - Проверьте чистое состояние:
cat work.txt— снова показывает "base" - Восстановите stash:
git stash pop - Проверьте восстановление:
cat work.txt— снова показывает "in progress"
Несколько записей stash
Вы можете выполнять stash несколько раз. Каждый новый stash помещается на вершину стека:
git stash # сохраняет текущую работу как stash@{0}
git stash # сохраняет ещё работу как stash@{0}, предыдущий становится stash@{1}
git stash list # показывает все записи
git stash pop # восстанавливает stash@{0}