Ответ
Stage (индекс, staging area) — это промежуточная область для подготовки коммита. Stash — это временное хранилище для незавершённых изменений.
Git Stage (Индекс)
- Назначение: Точный контроль над тем, какие изменения попадут в следующий коммит.
- Команды:
git add,git restore --staged. - Жизненный цикл: Изменения остаются в индексе, пока не будут закоммичены или убраны оттуда.
- Пример:
# Подготовить к коммиту только файл A git add file_a.txt # Проверить статус (file_a.txt — в stage, file_b.txt — нет) git status
Git Stash
- Назначение: Временно отложить все текущие изменения (как staged, так и unstaged), чтобы очистить рабочую директорию.
- Команды:
git stash,git stash pop,git stash list. - Жизненный цикл: Изменения сохраняются в отдельном списке и могут быть применены позже в любой ветке.
- Пример:
# Сохранить ВСЕ текущие изменения в stash и очистить рабочую директорию git stash -u # Переключиться на другую ветку для срочного исправления git checkout main # Вернуться и восстановить отложенные изменения git checkout feature git stash pop
Ключевое отличие: Stage — это «черновик коммита», а Stash — «временная полка» для всей незавершённой работы.