Команды Git

git stash

git stash: спрятать изменения из рабочей директории во временное хранилище (англ. stashтайник), возвращая её в чистое состояние (к состоянию последнего коммита).

При запуске git stash Git берёт правки в отслеживаемых файлах (включая всё добавленное в область подготовки) и помещает их во временное хранилище. После этого рабочие файлы восстанавливаются до состояния последнего коммита.

Это полезно, когда нужно сделать паузу в работе — например, чтобы переключиться на другую ветку, подтянуть новые обновления или попробовать что-то рискованное, — не теряя при этом прогресс. По умолчанию Git не трогает неотслеживаемые файлы, но при желании их можно включить в сохранение.

Стэш (англ. stash) работает как колода карт. Можно добавлять (англ. push) новые изменения наверх колоды и извлекать (англ. pop) их, когда они снова понадобятся. Чаще всего для создания нового стэша используется git stash (что равноценно git stash push), а для его возврата — git stash pop, что заодно удаляет эту запись из списка.

Каждый стэш получает идентификатор вроде stash@{0}, где 0 — самая свежая запись. Сохранённые изменения можно просматривать, применять, изучать, удалять по одному или очищать целиком в любой момент.

Примеры

Временно застэшить текущие изменения и очистить рабочую директорию:

git stash

То же самое, что и:

git stash push

Применить самый свежий стэш и удалить его из списка:

git stash pop

Добавить понятное сообщение к стэшу, чтобы его было проще найти позже:

git stash push -m "WIP: responsive header"

Включить неотслеживаемые файлы в стэш:

git stash push -u

Посмотреть список стэшей и изучить изменения (англ. diff) конкретной записи:

git stash list
git stash show -p stash@{0}

Применить стэш без его удаления, восстановив изменения и в рабочем дереве, и в области подготовки:

git stash apply --index stash@{1}

Это пригодится, если нужно применить эти правки в нескольких ветках или оставить их на будущее.

Удалить конкретную запись из стэша:

git stash drop stash@{0}

Очистить все стэши, когда они больше не нужны:

git stash clear