Git stash: сохранение изменений без коммита

Что такое Git stash?

Работая над веткой ten, вы внесли изменения в несколько файлов. Некоторые изменения уже занесены в индекс, но коммит ещё не создан. Необходимо переключиться на другую ветку, например, temp, сохранив текущие изменения в ветке ten. Для этого предназначен git stash. Он позволяет временно сохранить незафиксированные изменения и затем восстановить их.

Практическое применение Git stash

Переключимся на ветку temp: git checkout temp. Внесём изменения в файлы redeemed.md и bakers.tmp. Например, изменим ширину в redeemed.md на 200 пикселей и удалим атрибут target="_blank" в bakers.tmp.

Проверим статус репозитория: видим измененные файлы. Добавим bakers.tmp в индекс командой git add bakers.tmp.

Чтобы сохранить изменения в ten перед переключением на другую ветку, используем команду: git stash.

Результат: сообщение Saved working directory and index state WIP on temp: …. Видим хеш SHA-1 и описание изменений.

Git создал временный коммит, сохранив изменения, и создал к нему ссылку в файле .git/refs/stash.

Проверим файлы redeemed.md и bakers.tmp. Изменения пропали.

Файл .git/refs/stash содержит SHA-1 хеш. Получим содержимое объекта Git по этому хешу: git cat-file -p <SHA-1 хеш>. Получим объект типа commit, содержащий информацию о сохраненных изменениях, включая сообщение WIP on temp: …. Этот временный коммит хранит наши изменения.

Восстановление изменений с помощью Git stash

Переключимся на ветку temp: git checkout temp. Вернёмся к ветке ten: git checkout ten.

Чтобы восстановить сохраненные изменения, выполним команду: git stash pop.

Результат: изменения применены, файлы redeemed.md и bakers.tmp содержат внесенные ранее изменения. Файл .git/refs/stash удалён, так как stash применён.

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

Что будем искать? Например,программа