Гид по технологиям

Как временно сохранить изменения в Git с помощью git stash

4 min read GIT Обновлено 06 Dec 2025
Git: временно сохранить изменения — git stash
Git: временно сохранить изменения — git stash

Логотип Git на синем фоне

Быстрые ссылки

  • Почему временно сохранявать изменения?

  • Как сохранить изменения в хранилище (stash)

  • Просмотр сохранённых (stashed) изменений

  • Восстановление сохранённых изменений

Если нужно переключиться на другую ветку, а вы ещё не готовы коммитить изменения в текущей ветке, вы можете временно сохранить (stash) свои изменения и вернуться к ним позже. Это работает в Git, независимо от того, используете ли вы GitHub или другой хостинг.

Почему временно сохранять изменения?

Временное сохранение (stash) помогает не загрязнять рабочую ветку незавершённой работой. Это удобно, когда нужно срочно починить баг в другой ветке или быстро переключиться на задачу без коммита полуготового кода.

Пример: вы работаете в ветке A, но в ветке B найден критический баг. Вы не готовы коммитить изменения в A, поэтому выполняете git stash, переключаетесь в B, исправляете баг, затем возвращаетесь в A и восстанавливаете сохранённые изменения.

Короткое определение: stash — временное хранилище рабочей копии и индекса, которое не отправляется в удалённый репозиторий.

Как сохранить изменения в хранилище (stash)

Сначала полезно посмотреть, что именно вы собираетесь сохранять:

git status

Вывод команды git status в терминале

Вы увидите, какие файлы в индексе (staged) и какие — нет. По умолчанию git stash сохраняет и staged, и unstaged изменения.

Чтобы сохранить изменения в stash, выполните:

git stash

Сохранение изменений в stash с помощью команды git stash

После выполнения вы получите сообщение о том, что изменения сохранены в stash на текущей ветке. Рабочая директория вернётся в состояние до внесённых изменений, и вы сможете безопасно переключиться на другую ветку.

Совет: можно добавить метку к сохранению:

git stash push -m "WIP: исправление логики авторизации"

Замечание о современных командах: git stash push предпочтительнее в новых версиях Git, тогда как git stash save считается устаревающей формой.

Просмотр сохранённых изменений

Если вы сохранили несколько наборов изменений, полезно увидеть список stash:

git stash list

Вывод команды git stash list в терминале

Каждый элемент имеет имя вида stash@{N}, где N — индекс. Например, stash@{0} — самый последний сохранённый набор.

Пример списка stash с разными индексами

Чтобы посмотреть подробности конкретного stash, выполните:

git stash show

Вывод команды git stash show с краткой информацией о diff

Для показа в формате diff используйте:

git stash show -p

Восстановление сохранённых изменений

Когда вы готовы вернуться к работе, есть два основных способа вернуть изменения из stash:

  • Скопировать изменения в рабочую директорию, сохранив копию в stash:
git stash apply

Применение stash без удаления записи из списка

  • Скопировать изменения и удалить запись из stash (pop):
git stash pop

Применение stash и удаление записи из списка

Если у вас несколько сохранений, укажите нужный индекс:

git stash apply stash@{2}

или

git stash pop stash@{2}

После применения возможно возникновение конфликтов, как при обычном слиянии. Разрешите конфликты, выполните git add и, при необходимости, завершите работу обычным коммитом.

Дополнительные полезные команды:

  • Удалить конкретный stash:
git stash drop stash@{1}
  • Очистить все записи:
git stash clear
  • Сохранить также неотслеживаемые файлы (untracked):
git stash push -u
  • Сохранить все файлы, включая игнорируемые:
git stash push -a

Важно: по умолчанию git stash не сохраняет неотслеживаемые файлы. Используйте -u или -a, если нужно сохранить и их.

Типичные проблемы и как их решать

  • Конфликты при применении stash. Решение: разрешите конфликты в файлах, затем git add и, при необходимости, сделайте коммит.

  • Забыл, какие изменения в stash. Решение: git stash show -p stash@{N}.

  • Нужны не все изменения из stash. Решение: примените stash на новую временную ветку, выберите нужные хунки (git add -p) и закоммитьте только нужное.

  • Потеря нечётко сохранённых неотслеживаемых файлов. Решение: для будущего используйте git stash push -u.

Когда не стоит использовать stash

  • Когда изменения уже подготовлены для отдельного коммита или пулл-реквеста — лучше создать отдельную ветку и закоммитить.

  • Если вы хотите сохранить историю изменений и сообщения коммитов — stash не сохраняет историю коммитов.

  • Для долгосрочной работы между машинами: stash хранится локально, не подходит как заменитель ветки и пуша в удалённый репозиторий.

Шаблон действий (чек-лист)

  1. git status — проверьте изменения.
  2. При необходимости добавьте метку: git stash push -m “описание”.
  3. Переключитесь на нужную ветку: git checkout bugfix-branch.
  4. Внесите и закоммитьте исправления.
  5. Вернитесь в рабочую ветку: git checkout feature-branch.
  6. Восстановите stash: git stash apply или git stash pop.
  7. Разрешите конфликты, выполните git add и, при необходимости, коммит.
  8. Удалите ненужные записи: git stash drop или git stash clear.

Критерии приёмки

  • Рабочая директория соответствует ожидаемому состоянию после применения stash.
  • Все нужные изменения восстановлены и корректно протестированы.
  • Конфликты разрешены; репозиторий в рабочем состоянии (git status показывает чистую рабочую директорию или ожидаемые файлы).

Краткий глоссарий

  • stash — временное локальное хранилище изменений.
  • stash@{N} — идентификатор сохранённого набора изменений.
  • apply — применить изменения из stash, оставив запись в списке.
  • pop — применить изменения и удалить запись из stash.

Краткое резюме

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

Related: How to Delete a Branch on GitHub

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Массовая загрузка изображений с Pinterest
Руководство

Массовая загрузка изображений с Pinterest

Отправить фото в полном качестве в WhatsApp
Советы WhatsApp

Отправить фото в полном качестве в WhatsApp

Убрать звук в видео для Instagram
Instagram

Убрать звук в видео для Instagram

Установка Windows 11 Beta — пошагово
Windows

Установка Windows 11 Beta — пошагово

Как включить NSFW на Reddit
Руководство

Как включить NSFW на Reddit

Удаление Feedback Hub в Windows 11
Windows

Удаление Feedback Hub в Windows 11