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 и проверка шагов.