Что такое git stash?
git stash — это команда в системе управления версиями Git, которая позволяет временно сохранить текущие изменения в
рабочем каталоге, не добавляя их в коммит. Это полезно, когда вам нужно переключиться на другую ветку или выполнить
другие действия, не желая потерять незавершённую работу.
Как работает git stash
Когда вы выполняете команду git stash, Git берет все изменения, которые не были закоммичены (например, изменения в
отслеживаемых файлах и новые файлы), и сохраняет их в области, называемой "хранилищем" (stash). Эти изменения можно
потом восстановить в любое время.
Основные команды
- Сохранить изменения в хранилище:
git stash
Эта команда сохраняет все изменения и восстанавливает состояние рабочего каталога до последнего коммита. - Список сохранённых изменений:
git stash list
Выводит список всех сохранённых изменений, например:stash@{0}: WIP on master: 6e5f692 начальные изменения - Восстановить последние сохранённые изменения:
git stash pop
Закомандуpopизвлекает последние сохранённые изменения из хранилища и удаляет их оттуда. - Восстановить изменения, не удаляя их из хранилища:
git stash apply
Эта команда применяет изменения, но сохраняет их в хранилище для дальнейшего использования. - Удалить сохранённые изменения из хранилища:
git stash drop stash@{0}
Эта команда удаляет конкретный элемент из хранилища. - Очистить всё хранилище:
git stash clear
Удаляет все сохранённые изменения из хранилища.
Пример использования
Предположим, вы работаете над новой функциональностью и внесли изменения в несколько файлов, но вам нужно переключиться на ветку для исправления ошибки. Чтобы временно сохранить свою работу, выполните:
git stash
Теперь вы можете уверенно переключиться на другую ветку:
git checkout hotfix-branch
После того как вы завершите работу с ошибкой и вернётесь на свою ветку:
git checkout feature-branch
git stash pop
Ваши изменения будут восстановлены, и вы сможете продолжать работу.
Заключение
Команда git stash — это мощный инструмент, который помогает управлять незавершёнными изменениями в Git, позволяя вам
легко переключаться между задачами, не теряя прогресс. Это базовая, но важная функциональность, которая особенно полезна
в повседневной работе с Git.