В каких случаях используется stash в Git?

Ответ

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

Основные сценарии использования git stash:

  • Смена контекста: Вам нужно срочно переключиться на другую ветку (например, для исправления бага или проверки чужого кода), но текущие изменения ещё не готовы для коммита. git stash сохраняет их, позволяя безопасно переключиться.
  • Обновление ветки: Перед выполнением git pull или git rebase на текущей ветке, чтобы избежать конфликтов с незакоммиченными локальными изменениями. После обновления можно применить stash обратно.
  • Эксперименты: Вы хотите попробовать новую идею или внести временные изменения, не загрязняя историю коммитов. git stash позволяет сохранить текущее состояние, провести эксперимент, а затем либо применить stash, либо отбросить его.
  • Очистка рабочей директории: Если вы хотите временно убрать все локальные изменения, чтобы начать с чистого листа, но не хотите их терять.

Примеры команд:

  • Сохранить изменения в stash:
    git stash save "WIP: Feature X" # С сообщением
    git stash                     # Без сообщения
  • Просмотреть список stash'ей:
    git stash list
  • Применить последний stash и удалить его из списка (pop):
    git stash pop
  • Применить последний stash, но оставить его в списке (apply):
    git stash apply
  • Применить конкретный stash (например, stash@{1}):
    git stash apply stash@{1}
  • Удалить последний stash:
    git stash drop

Важное замечание: По умолчанию git stash не сохраняет неотслеживаемые файлы (untracked files) и игнорируемые файлы (ignored files). Чтобы включить неотслеживаемые файлы, используйте флаг -u или --include-untracked:

git stash -u