[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-git-chto-takoe-git-stash":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},1333,"chto-takoe-git-stash",44,"git","Git","📦","Что такое git stash?","git stash — это команда для временного сохранения незакоммиченных изменений (staged и unstaged) в специальном стековом хранилище, чтобы переключиться на другую задачу с чистой рабочей директорией.\n\n> Аналогия из жизни: stash — это ящик стола, куда вы быстро складываете текущую работу, когда начальник просит срочно заняться другой задачей. Закончив срочное, вы достаёте свои материалы обратно из ящика.\n\n### Основные операции\n\n```bash\n# Сохранить все незакоммиченные изменения\ngit stash\n\n# Сохранить с описанием\ngit stash push -m \"WIP: рефакторинг сервиса оплаты\"\n\n# Сохранить, включая неотслеживаемые (untracked) файлы\ngit stash -u\ngit stash --include-untracked\n\n# Сохранить только staged-изменения\ngit stash push --staged\n```\n\n### Просмотр и восстановление\n\n```bash\n# Список сохранённых stash-записей\ngit stash list\n# stash@{0}: On feature\u002Fpayment: WIP: рефакторинг сервиса оплаты\n# stash@{1}: WIP on main: a1b2c3d fix typo\n\n# Показать содержимое stash\ngit stash show stash@{0}\ngit stash show -p stash@{0}   # с полным diff\n\n# Восстановить последний stash И удалить его из списка\ngit stash pop\n\n# Восстановить последний stash, НО оставить в списке\ngit stash apply\n\n# Восстановить конкретный stash\ngit stash apply stash@{1}\ngit stash pop stash@{1}\n```\n\n### Удаление\n\n```bash\n# Удалить конкретный stash\ngit stash drop stash@{0}\n\n# Удалить все stash-записи\ngit stash clear\n```\n\n### Создание ветки из stash\n\n```bash\n# Создать новую ветку и применить stash\ngit stash branch feature\u002Fpayment-refactor stash@{0}\n# Полезно, если stash конфликтует с текущим состоянием\n```\n\n### Типичный сценарий\n\n```bash\n# Работаете над фичей, но нужно срочно переключиться на hotfix\ngit stash push -m \"WIP: feature\u002Fpayment\"\n\n# Переключаемся и делаем hotfix\ngit switch main\ngit switch -c hotfix\u002Fcritical\n# ... fix, commit, push ...\n\n# Возвращаемся к своей работе\ngit switch feature\u002Fpayment\ngit stash pop\n```\n\n### Ключевые моменты\n\n- `stash pop` = `stash apply` + `stash drop` — применяет и удаляет одной командой\n- По умолчанию `stash` не сохраняет untracked-файлы — используйте `-u` для их включения\n- Stash — это стек (LIFO). `git stash pop` без указания номера берёт последний (`stash@{0}`)\n- Stash привязан к репозиторию, а не к ветке — можно сохранить в одной ветке, применить в другой\n\n### Частые ошибки\n\n- Накапливать множество записей в stash и забывать о них — используйте описания `-m`\n- Путать `pop` и `apply` — `pop` удаляет stash после применения, `apply` — нет\n- Не использовать `-u` и терять untracked-файлы при переключении веток\n- Полагаться на stash как на долговременное хранилище — лучше создать коммит\n\n### Как используется в 2026\n\n- IDE (IntelliJ IDEA, VS Code) предоставляют графический интерфейс для управления stash\n- `git stash push --staged` (Git 2.35+) позволяет сохранить только проиндексированные изменения — удобно для частичного переключения контекста\n- Многие команды предпочитают WIP-коммиты вместо stash, так как коммиты можно пушить и делиться ими\n- Автоматическое сохранение stash при переключении веток доступно в некоторых GUI-клиентах\n\n> **На собеседовании:** покажите, что знаете разницу между `pop` (apply + drop) и `apply` (без удаления). Часто спрашивают типичный сценарий использования — срочное переключение контекста. Упомяните флаг `-u` для untracked-файлов и что stash — это стек (LIFO).","","junior",[7,15,16],"основы","commands",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"Что такое git stash — Gymterview","git stash: временное сохранение незакоммиченных изменений. Операции push\u002Fpop\u002Fapply\u002Fdrop, флаг -u для untracked, создание ветки из stash, типичные сценарии.","Git stash: временное сохранение изменений — Gymterview","Как использовать git stash: push, pop vs apply, флаг -u, создание ветки. Типичный сценарий — срочное переключение контекста.",[25,26,27,28,29,30,31,8,32],"git stash","stash pop","stash apply","stash push","временное сохранение","untracked","LIFO","собеседование","git stash — команда для временного сохранения незакоммиченных изменений в стековом хранилище (LIFO). pop = apply + drop (применяет и удаляет), apply — оставляет в списке. Флаг -u включает untracked-файлы. Stash привязан к репозиторию, не к ветке. git stash push --staged (Git 2.35+) сохраняет только проиндексированные. Можно создать ветку из stash: git stash branch \u003Cname>.",true]