Что такое git stash и для чего он используется?

«Что такое git stash и для чего он используется?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные команды:

# Сохранить текущие изменения с сообщением
git stash save "WIP: работа над функцией X"

# Показать список всех сохранённых stash'ей
git stash list

# Применить последний stash (не удаляя его из списка)
git stash apply

# Применить конкретный stash по индексу
git stash apply stash@{2}

# Применить и удалить последний stash из списка
git stash pop

# Удалить конкретный stash
git stash drop stash@{1}

# Очистить все stash'и
git stash clear

Ключевые особенности:

  • Изменения сохраняются в локальном хранилище Git (в директории .git)
  • Можно создавать несколько stash'ей с разными сообщениями
  • Stash не передаётся при пуше в удалённый репозиторий
  • Полезен при срочных правках в другой ветке или при необходимости "очистить" рабочую директорию для тестирования

Практический пример:

# Вы работаете над feature-веткой
# Появляется срочный баг в main

git stash                    # Сохраняем текущую работу
git checkout main            # Переключаемся на main
# Исправляем баг, коммитим, пушим
git checkout feature-branch  # Возвращаемся к своей работе
git stash pop                # Восстанавливаем сохранённые изменения