Ответ
git stash используется для временного сохранения незакоммиченных изменений (как в рабочей директории, так и в индексе) без создания нового коммита. Это позволяет быстро очистить рабочую директорию, чтобы переключиться на другую ветку или выполнить другие операции, а затем вернуться к прерванной работе.
Основные сценарии использования git stash:
- Смена контекста: Вам нужно срочно переключиться на другую ветку (например, для исправления бага или проверки чужого кода), но текущие изменения ещё не готовы для коммита.
git stashсохраняет их, позволяя безопасно переключиться. - Обновление ветки: Перед выполнением
git pullилиgit rebaseна текущей ветке, чтобы избежать конфликтов с незакоммиченными локальными изменениями. После обновления можно применить stash обратно. - Эксперименты: Вы хотите попробовать новую идею или внести временные изменения, не загрязняя историю коммитов.
git stashпозволяет сохранить текущее состояние, провести эксперимент, а затем либо применить stash, либо отбросить его. - Очистка рабочей директории: Если вы хотите временно убрать все локальные изменения, чтобы начать с чистого листа, но не хотите их терять.
Примеры команд:
- Сохранить изменения в stash:
git stash save "WIP: Feature X" # С сообщением git stash # Без сообщения - Просмотреть список stash'ей:
git stash list - Применить последний stash и удалить его из списка (
pop):git stash pop - Применить последний stash, но оставить его в списке (
apply):git stash apply - Применить конкретный stash (например,
stash@{1}):git stash apply stash@{1} - Удалить последний stash:
git stash drop
Важное замечание: По умолчанию git stash не сохраняет неотслеживаемые файлы (untracked files) и игнорируемые файлы (ignored files). Чтобы включить неотслеживаемые файлы, используйте флаг -u или --include-untracked:
git stash -u