Ответ
git stash — это команда Git для временного сохранения незакоммиченных изменений из рабочей директории и индекса (staging area), позволяющая "очистить" состояние проекта для других операций (переключения ветки, обновления кода), с возможностью последующего восстановления этих правок.
Основные команды:
# Сохранить все отслеживаемые и проиндексированные изменения в stash.
# Сообщение "WIP: ..." помогает позже идентифицировать stash.
git stash save "WIP: работа над кнопкой"
# Сохранить ВСЕ изменения, включая неотслеживаемые (untracked) файлы
git stash save -u "Включая новые файлы"
# Показать список всех сохранённых stash'ей
git stash list
# stash@{0}: On feature/login: WIP: работа над кнопкой
# Применить последний stash и УДАЛИТЬ его из списка
git stash pop
# Применить конкретный stash (например, stash@{2}) и удалить его
git stash pop stash@{2}
# Применить stash, но НЕ удалять его из списка
git stash apply stash@{1}
# Удалить конкретный stash
git stash drop stash@{0}
# Очистить все stash'и
git stash clear
Типичные сценарии использования:
- Срочное переключение ветки: У вас есть незавершённые правки, но нужно переключиться на
main, чтобы срочно пофиксить баг. - Чистый pull/merge: Чтобы получить свежие изменения из удалённого репозитория без конфликтов с вашими правками.
- Сохранение эксперимента: Сохранить код, который вы пока не готовы коммитить, но хотите отложить.