Ответ
Git stash — это команда для временного сохранения незакоммиченных изменений (как staged, так и unstaged) в рабочей директории. Это позволяет переключиться на другую ветку или задачу, не создавая промежуточных коммитов.
Основные команды:
# Сохранить текущие изменения с сообщением
git stash save "WIP: работа над функцией X"
# Показать список всех сохранённых stash'ей
git stash list
# Применить последний stash (не удаляя его из списка)
git stash apply
# Применить конкретный stash по индексу
git stash apply stash@{2}
# Применить и удалить последний stash из списка
git stash pop
# Удалить конкретный stash
git stash drop stash@{1}
# Очистить все stash'и
git stash clear
Ключевые особенности:
- Изменения сохраняются в локальном хранилище Git (в директории
.git) - Можно создавать несколько stash'ей с разными сообщениями
- Stash не передаётся при пуше в удалённый репозиторий
- Полезен при срочных правках в другой ветке или при необходимости "очистить" рабочую директорию для тестирования
Практический пример:
# Вы работаете над feature-веткой
# Появляется срочный баг в main
git stash # Сохраняем текущую работу
git checkout main # Переключаемся на main
# Исправляем баг, коммитим, пушим
git checkout feature-branch # Возвращаемся к своей работе
git stash pop # Восстанавливаем сохранённые изменения