Продвинутый Git
Урок 2~12 минут
stash: прячем незавершённую работу
Ты работаешь над фичей — и тут прилетает срочный баг. Коммитить незаконченное не хочется. Именно для этого git stash.
Как работает stash
bash
git stash # спрятать все изменения (staged + unstaged)
git stash pop # достать последний, удалить из стекаStash — это стек (LIFO). Каждый git stash кладёт запись сверху:
stash@{0}: WIP on main: feat: черновик ← последний
stash@{1}: WIP on main: fix: другая задача
stash@{2}: WIP on feature: старая работа
Попробуй в симуляции
Нажми «git stash» — файлы исчезнут в стеке. Потом «pop» — вернутся. Кликни на незменённый файл чтобы его «изменить».
Именованные stash
bash
git stash push -m "feat: черновик авторизации"Без названия все stash выглядят одинаково — сложно вспомнить что внутри. Называй их по задаче.
Частичный stash
bash
git stash push auth.js # только один файл
git stash push -p # выбрать изменения интерактивноПолезно когда одна часть изменений готова к коммиту, другая — нет.
Управление стеком
bash
git stash list # список всех stash
git stash show stash@{1} # что в конкретном stash
git stash apply stash@{1} # применить, не удалять из стека
git stash drop stash@{0} # удалить конкретный stash
git stash clear # удалить все stashapply vs pop:
pop— достать и удалить из стекаapply— достать и оставить в стеке (можно применить повторно или на другой ветке)
Stash и ветки
Stash не привязан к ветке. Можно спрятать изменения на одной ветке, переключиться, и достать на другой:
bash
git switch main
git stash # прячем
git switch feature
git stash pop # достаём на другой веткеИли создать новую ветку прямо из stash:
bash
git stash branch feature/new-idea stash@{0}
# создаёт ветку + применяет stash + удаляет егоТипичный сценарий
bash
# Работаешь над фичей...
git stash push -m "feat: WIP авторизация"
# Переключаешься на hotfix
git switch main
git switch -c hotfix/critical-bug
# ...фиксишь баг...
git commit -m "fix: критический баг"
git push
# Возвращаешься к своей работе
git switch feature/auth
git stash popКоманды
bash
git stash # спрятать
git stash push -m "название" # с именем
git stash push файл # конкретный файл
git stash list # список
git stash pop # достать последний
git stash apply stash@{N} # применить конкретный
git stash drop stash@{N} # удалить конкретный
git stash branch имя-ветки # создать ветку из stash
git stash clear # удалить всёstash — это карман. Бросаешь туда незаконченную работу, делаешь срочный фикс, достаёшь обратно.
📦
git stash — прячем измененияWorking Directory
🔐auth.jsM
🗺routes.jsM
📝README.md
2 файл(а) изменено
Stash Stack
пусто
Кликни на файл без M → изменить
🎯
Миссия 1 из 4
Какая команда прячет все незакоммиченные изменения?