Git Stash: потому что иногда можно просто спрятать

3 минут читать
Разработка
git
Git Stash: потому что иногда можно просто спрятать

Привет, это Глеб Котовский!
Добро пожаловать в мою серию статей о Git! Сегодня мы разберём Git Stash — мощный инструмент для управления незавершённой работой.

Git Stash в действии

Когда вы работаете над несколькими задачами одновременно, это похоже на игру “убей крота”. Представьте: вы погружены в новую фичу, и вдруг — срочный баг! Именно здесь Git Stash становится вашим спасителем. В этой статье я покажу, как эффективно использовать Stash, и вы удивитесь, как раньше обходились без него.

Что такое Git Stash?

Git Stash — это способ временно сохранить незакоммиченные изменения. Представьте его как черновик для незавершённой работы. Когда вы “прячете” изменения, Git сохраняет модифицированные файлы и очищает рабочую директорию. Это позволяет переключать ветки или обновлять код без риска потерять текущий прогресс.

3 причины использовать Stash

1) Срочные задачи

Типичный сценарий: вы пишете код → делаете add/commit → пушите. Но что если нужно срочно переключиться на другую задачу, а коммит делать рано?

Типичный рабочий процесс

Срочное прерывание

Вот где Stash спасает от незавершённых коммитов!

2) Эксперименты

Хотите попробовать новую идею, но не желаете засорять историю? Спрячьте текущие изменения и экспериментируйте свободно.

3) Чистая история

Избегайте коммитов вроде “WIP” (Work In Progress), сохраняя историку репозитория осмысленной.

Использование Git Stash

Базовое сохранение

Спрятать изменения:

git stash

Добавить неотслеживаемые файлы:

git stash -u

Включить игнорируемые файлы:

git stash -a

Просмотр “тайников”

Список сохранённых изменений:

git stash list

Пример вывода:
stash@{0}: WIP on feature-branch: 5d9a9cc Initial commit

Извлечение изменений

Вернуть последние изменения (без удаления из stash):

git stash apply

Вернуть конкретный “тайник”:

git stash apply stash@{1}

Управление хранилищем

Удалить конкретный stash:

git stash drop stash@{0}

Очистить всё хранилище:

git stash clear

Извлечь с удалением

Вернуть и сразу удалить из списка:

git stash pop

Именованный stash

Добавить описание для ясности:

git stash push -m "Рефакторинг модуля оплаты"

Практические сценарии

Срочный фикс бага

# Текущая работа
git stash
# Переключение на срочную задачу
git checkout main
# Фиксим баг, коммитим
git commit -m "Critical hotfix"
# Возвращаемся к задаче
git checkout feature-branch
git stash pop

Эксперименты

git stash
# Пробуем радикальную идею
# Если не понравилось:
git stash pop

Заключение

Git Stash - это бесценный инструмент для разработчиков, предоставляющий удобный механизм для управления незавершенными работами без загромождения истории коммитов. Эффективное использование тайников позволит вам не отвлекаться на выполнение задач и не бояться потерять изменения.
Так что в следующий раз, когда вы окажетесь в затруднительном положении, помните: не стоит откладывать работу в долгий ящик. В конце концов, иногда можно просто спрятать!