git stash: спрятать незаконченную работу

Обновлено 31 июля 2026 г.

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

$ git stash
Saved working directory and index state WIP on main: 375d973 Revert "поправил опечатки"

$ git status
On branch main
nothing to commit, working tree clean

Рабочий каталог чист, но ничего не пропало. Спрятанные наборы лежат стопкой, самый свежий - stash@{0}:

$ git stash list
stash@{0}: WIP on main: 375d973 Revert "поправил опечатки"
stash@{1}: On main: правка про цены

Достать работу обратно можно тремя способами. git stash pop применяет верхний набор и убирает запись из списка. git stash apply применяет, но запись оставляет - удобно, когда одну и ту же заготовку надо разложить на две ветки. git stash drop выбрасывает запись, ничего не применяя.

$ git stash pop
Dropped refs/stash@{0} (d2d1066f68f1307096165b380bf6fde3561c01b5)

Неотслеживаемые файлы команда по умолчанию не трогает: файл, который ни разу не попадал в git add, останется на диске. Забрать в укрытие и его помогает -u:

$ git stash -u                          # вместе с неотслеживаемыми файлами
$ git stash push -m "правка про цены"   # спрятать под понятным именем

Набор не привязан к ветке, где его сделали: спрятал на одной, достал на другой.

Частые ошибки

Стопка растёт незаметно. git stash без имени пишет одинаковые строки WIP on main, и через неделю в списке пять наборов, о которых уже никто ничего не помнит. Давай имя через git stash push -m, а если забыл, смотри содержимое через git stash show -p stash@{0}.

Второе место, где спотыкаются, - конфликт при возврате. Если файл успел измениться в коммите, git stash pop наткнётся на конфликт слияния и запись из списка не удалит:

$ git stash pop
CONFLICT (content): Merge conflict in report.txt
The stash entry is kept in case you need it again.

Конфликт разбирают руками, как обычный конфликт слияния, а потом убирают запись через git stash drop.

Где это в учебнике

Работа со stash разобрана в восьмой главе.

Глава 8. Аптечка: когда что-то пошло не так

Потренироваться руками - в Песочнице: настоящий терминал с git и проверка шагов.