Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
git stash: сохранение незавершённых изменений
git stash — это команда для временного сохранения незавершённых изменений в файлах, которая позволяет "спрятать" рабочие изменения и вернуться к чистому состоянию репозитория.
Когда используется git stash
Основные сценарии:
-
Срочный переключение на другую ветку — ты работаешь над фичей, но нужно срочно исправить баг в master. Если коммитить незавершённый код — плохо. Решение: stash изменения, переключись на другую ветку, исправь баг, вернись на свою ветку и восстанови изменения.
-
Очистка рабочей директории — перед pull или merge нужна чистая рабочая директория. Вместо коммита черновика — используй stash.
-
Переупорядочение commits — если начал коммитить не в том порядке, stash помогает переделать последовательность.
-
Переключение между вариантами — экспериментируешь с разными подходами к реализации. Stash позволяет быстро переключаться между вариантами.
Основные команды
# Сохранить текущие изменения
git stash
# Сохранить с описанием
git stash save "WIP: реализация компонента Button"
# Список всех stash-ей
git stash list
# Восстановить последний stash и удалить его
git stash pop
# Восстановить конкретный stash
git stash apply stash@{0}
# Восстановить без удаления из списка
git stash apply
# Удалить конкретный stash
git stash drop stash@{0}
# Очистить все stash-и
git stash clear
Различие между pop и apply
- pop — восстанавливает изменения и удаляет stash из списка
- apply — восстанавливает изменения, но оставляет stash (нужно потом drop вручную)
Используй pop, если уверен что восстановление прошло успешно. Используй apply, если хочешь сначала проверить результат.
Особенности и ограничения
- Untracked files — по умолчанию stash сохраняет только tracked файлы. Для новых файлов нужен флаг
git stash -u(untracked). - Конфликты — если изменения в stash конфликтуют с текущим состоянием, стоит ручной разрешение конфликтов.
- Временность — stash-и не синхронизируются между клонами репозитория. Это локальное хранилище.
Frontend контекст
Для frontend разработчика git stash особенно полезен когда:
- Работаешь над компонентом, а нужно быстро переключиться на исправление критического CSS bug-а
- Экспериментируешь с новой версией библиотеки, но хочешь оставить черновик
- Нужно откатить изменения в node_modules или build артефакты без полного reset
Альтернативы
Вместо stash можно использовать:
- Обычный commit с "WIP" префиксом (затем rebase для очистки истории)
- Отдельная WIP ветка
Но stash остаётся самым удобным способом для временных работ.