Сохранить изменения без коммита команда git stash

Как временно сохранить изменения без коммита команда git stash

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

Зачем это нужно

  • Команда git stash позволяет отложить незавершённые изменения без создания коммита
  • Необходимо использовать stash при срочном переключении на другую ветку для исправления критических багов
  • Git stash помогает избежать конфликтов при слиянии веток, если вы не готовы коммитить текущие изменения
  • Stash сохраняет состояние рабочей директории и индекса (staging area), полностью восстанавливая их позже
  • Несколько stash'ей могут быть сохранены одновременно, каждый со своим идентификатором
  • Отложенные изменения можно просмотреть, восстановить или удалить в любой момент времени
  • Stash особенно полезен при работе в команде, когда нужно быстро переключиться на ветку с исправлениями
  • Эта функция безопаснее, чем просто игнорировать изменения, так как они не потеряются

Пошаговая инструкция

  1. Отредактируйте нужные файлы в вашем проекте и сохраните их
  2. Откройте командную строку или терминал в директории проекта
  3. Проверьте статус изменений командой git status — должны отобразиться изменённые файлы
  4. Выполните команду git stash для сохранения всех изменений в хранилище stash
  5. Git выведет сообщение о сохранении изменений и автоматически восстановит чистое состояние рабочей директории
  6. Если нужно добавить описание к отложенным изменениям, используйте команду git stash save "описание вашего stash"
  7. Для сохранения только отслеживаемых файлов (без новых файлов) используйте git stash --keep-index
  8. Для сохранения всех файлов, включая новые неотслеживаемые файлы, выполните git stash -u или git stash --include-untracked
  9. Просмотрите список всех сохранённых stash'ей командой git stash list — выведется полный журнал с идентификаторами
  10. Каждый stash отображается в формате stash@{номер} с указанием ветки и сообщения
  11. Теперь переключитесь на нужную ветку командой git checkout название-ветки или создайте новую ветку git checkout -b новая-ветка
  12. Выполните необходимые работы на других ветках, делайте коммиты и пушьте изменения
  13. Для восстановления отложенных изменений вернитесь на исходную ветку командой git checkout исходная-ветка
  14. Восстановите последний stash'ь командой git stash pop — это вернёт изменения и удалит их из хранилища
  15. Если вы хотите восстановить конкретный stash, используйте git stash pop stash@{номер} (например, git stash pop stash@{0})
  16. Альтернативно используйте команду git stash apply stash@{номер} для восстановления изменений без удаления их из хранилища
  17. При конфликтах слияния решите их вручную, отредактировав конфликтующие файлы
  18. После разрешения конфликтов создайте коммит с объединённых изменений
  19. Для удаления конкретного stash'а используйте команду git stash drop stash@{номер}
  20. Для удаления всех stash'ей выполните git stash clear — это действие необратимо
  21. Просмотрите содержимое stash'а перед восстановлением командой git stash show stash@{номер} или git stash show -p stash@{номер} для подробной разницы

Часто задаваемые вопросы

Может ли git stash потерять мои изменения? Нет, изменения безопасно хранятся в Git и могут быть восстановлены в любое время; они удаляются только при выполнении команды git stash drop или git stash clear.

Как восстановить stash, если я случайно его удалил? Удалённый stash нельзя восстановить, но вы можете просмотреть историю всех операций Git командой git reflog и попытаться восстановить потерянные коммиты.

В чём разница между git stash pop и git stash apply? Команда git stash pop восстанавливает изменения и удаляет stash из хранилища, а git stash apply восстанавливает изменения, но оставляет stash в списке для повторного использования.

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

Отмена последнего коммита в Git без потери написанного кода
Объединение двух веток в Git команда merge и как решать конфликты
Полезные расширения для VS Code упрощающих написание кода