Команда git stash: для чего нужна и как работает
Команда git stash в Git используется для временного сохранения (или «прихоронения») изменений в рабочем каталоге, чтобы вы могли вернуться к чистому состоянию репозитория. Это полезно, когда вам нужно переключиться на другую ветку или выполнить другую задачу, но вы не хотите коммитить незавершенные изменения.
Подробнее — в этой небольшой заметке.
Когда вы выполняете команду git stash, Git сохраняет ваши изменения (как в отслеживаемых, так и в неотслеживаемых файлах) и возвращает рабочий каталог в состояние последнего коммита. Вы можете позже восстановить эти изменения.
Основные команды и примеры:
✵ Сохранение изменений в stash:
git stash
Это сохранит все изменения в отслеживаемых файлах и вернет рабочий каталог в состояние последнего коммита.
✵ Сохранение изменений с сообщением:
git stash save "Сообщение о стэше"
Это позволяет вам добавить описание к вашему stash, что может быть полезно для идентификации изменений позже.
✵ Просмотр списка сохраненных stash:
git stash list
Эта команда покажет список всех сохраненных stash с их идентификаторами и сообщениями.
✵ Восстановление изменений из stash:
git stash apply
Эта команда применит последние сохраненные изменения из stash к вашему рабочему каталогу, но не удалит их из списка stash.
✵ Восстановление конкретного stash:
git stash apply stash@{1}
Здесь stash@{1} — это идентификатор конкретного stash, который вы хотите восстановить.
✵ Удаление stash после применения: если вы хотите удалить stash после его применения, используйте:
git stash pop
Эта команда применит изменения и удалит их из списка stash.
✵ Удаление конкретного stash:
git stash drop stash@{0}
Это удалит указанный stash из списка.
✵ Очистка всех stash:
git stash clear
Эта команда удалит все сохраненные stash.
Пример использования:
Предположим, вы работаете над новой функцией в ветке feature, и у вас есть незавершенные изменения. Вдруг вам нужно переключиться на ветку main, чтобы исправить срочную ошибку.
✵ Вы сохраняете свои изменения:
git stash
✵ Переключаетесь на ветку main:
git checkout main
✵ Исправляете ошибку и коммитите изменения.
✵ Возвращаетесь к ветке feature:
git checkout feature
✵ Восстанавливаете свои изменения:
git stash pop
Теперь вы можете продолжить работу над своей функцией с сохраненными изменениями.