← Назад к вопросам

Зачем нужна команда git stash?

2.0 Middle🔥 141 комментариев
#Инструменты и DevOps

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

git stash: сохранение незавершённых изменений

git stash — это команда для временного сохранения незавершённых изменений в файлах, которая позволяет "спрятать" рабочие изменения и вернуться к чистому состоянию репозитория.

Когда используется git stash

Основные сценарии:

  1. Срочный переключение на другую ветку — ты работаешь над фичей, но нужно срочно исправить баг в master. Если коммитить незавершённый код — плохо. Решение: stash изменения, переключись на другую ветку, исправь баг, вернись на свою ветку и восстанови изменения.

  2. Очистка рабочей директории — перед pull или merge нужна чистая рабочая директория. Вместо коммита черновика — используй stash.

  3. Переупорядочение commits — если начал коммитить не в том порядке, stash помогает переделать последовательность.

  4. Переключение между вариантами — экспериментируешь с разными подходами к реализации. 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 остаётся самым удобным способом для временных работ.