Git stash позволяет временно сохранить черновик ваших изменений, которые еще не были зафиксированы (committed), и вернуть рабочую директорию в чистое состояние. Это полезно, если вам нужно переключиться на другую задачу, но вы не хотите коммитить незавершенную работу.
— Как работает Git Stash?
Когда вы выполняете команду
git stash, Git берет все незакоммиченные изменения из вашей рабочей директории и сохраняет их в специальном хранилище (stash) — по сути, это стек отложенных изменений. После этого все незакоммиченные изменения удаляются из рабочей копии, и она снова соответствует последнему коммиту (HEAD).Сохраненные изменения остаются в отдельном месте, пока вы не будете готовы снова применить их. Это позволяет переключаться между ветками, получать обновления из удаленного репозитория, выполнять rebase и другие операции, не мешая текущей незавершенной работе.
— Рабочий процесс с Git Stash
🔹Сохранение изменений в stash
Перед тем как зафиксировать изменения в stash, сначала добавьте файлы в индекс, чтобы Git начал их отслеживать:
$ git add .
Если нужно сохранить только определенные файлы, укажите их при добавлении:
$ git add file.txt demo.txt
Затем создайте новый stash:
```bash
$ git stash
Эта команда сохранит ваши изменения и вернет рабочую директорию в состояние последнего коммита.
🔹Присвоение имени stash
Чтобы дать stash понятное название, используйте параметр -m:
git stash -m "<имя>"
Это поможет вам легче идентифицировать нужные сохраненные изменения позже.
🔹Просмотр списка stash'ей
Чтобы увидеть список всех сохраненных stash'ей, используйте:
$ git stash list
Для просмотра краткого описания stash'а выполните:
```bash
git stash show
Где
<stash> — это идентификатор stash'а из списка git stash list.🔹Применение stash'а
Когда вы готовы вернуть сохраненные изменения, используйте команду git stash pop:
git stash pop
Эта команда применяет изменения и удаляет stash из списка. Если вы хотите сохранить stash после применения, используйте:
git stash apply
🔹Применение конкретного stash'а
Чтобы применить stash, кроме последнего, используйте:
git stash apply <stash>
Или:
git stash pop --index <stash>
Где
<stash> — идентификатор stash'а из git stash list. apply сохраняет stash, а pop удаляет его после применения.🔹Создание новой ветки с stash'ем
Вы можете создать новую ветку и применить к ней изменения из stash'а:
git stash branch <branch-name> <stash>
Эта команда создаст новую ветку с изменениями из stash'а, привязанными к коммиту, в котором stash был создан.
🔹Удаление stash'ей
Когда stash больше не нужен, удалите его командой:
git stash drop <stash>
Это удаляет один stash. Чтобы удалить все stash'и, используйте:
git stash clear
После очистки stash'и невозможно будет восстановить.
🔹Дополнительные возможности
Git stash поддерживает множество дополнительных опций, включая возможность отправки stash'ей в удаленный репозиторий. Подробнее читайте в официальной документации.
— Когда использовать Git Stash?
Git stash полезен в следующих ситуациях:
🔹Переключение на другую ветку для получения обновлений
🔹Временное сохранение работы для исправления критической ошибки (hotfix)
🔹Разрешение конфликтов при выполнении git rebase
🔹Пауза в работе для слияния другой ветки в вашу
С помощью stash можно легко менять контексты работы без необходимости делать временные коммиты.
— Заключение
Git stash позволяет откладывать локальные изменения без коммитов, помогая гибко управлять рабочим процессом и переключаться между ветками. Это делает его важным инструментом для эффективной работы с Git.
👉 DevOps Portal