В процессе параллельной разработки нескольких фич или при срочном переключении контекста, git stash является ключевым инструментом для управления состоянием рабочей директории без создания лишних коммитов.
| Команда | Описание |
|---|---|
git stash |
Спрятать все отслеживаемые (tracked) изменения. |
git stash -u |
Спрятать изменения, включая новые (untracked) файлы. |
git stash list |
Вывод списка всех накопленных состояний с их индексами. |
- Просмотр списка файлов:
git stash show stash@{n} - Полный diff (код):
git stash show -p stash@{n} - Выход из режима просмотра: клавиша
qилиCtrl+C.
- Standard (Pop):
git stash pop stash@{n}— применяет изменения и удаляет запись из стека. - Safe (Apply):
git stash apply stash@{n}— только применяет код, сохраняя запись в стеке (рекомендуется при риске конфликтов). - Selective:
git checkout stash@{n} -- <file_path>— извлечение конкретного файла из любого стэша.
Если код в стэше конфликтует с текущим состоянием проекта:
git stash branch <new_branch_name> stash@{n}
Создает ветку на базе нужного коммита, применяет туда стэш и удаляет его из списка.
- Именованный stash:
git stash push -m "Feature: S3 integration" - Удаление записи:
git stash drop stash@{n} - Полная очистка:
git stash clear(использовать с осторожностью).
Использование кастомных промптов (например, Starship) визуализирует наличие данных в стеке символом [$], что предотвращает потерю накопленного контекста.