Откладывание и выборочное применение изменений
Освойте `git stash` для временного сохранения изменений и `git cherry-pick` для переноса отдельных коммитов между ветками
«Откладывание и выборочное применение изменений» — бесплатный урок Git Advanced: Monorepo, Submodules & Workflows на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Git Advanced: Monorepo, Submodules & Workflows, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Git Advanced: Monorepo, Submodules & Workflows содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Why Use Git Stash?
Mid-feature and an urgent bug fix lands? git stash temporarily shelves your uncommitted changes so you can switch branches without committing half-done work.
Saving Your Changes Temporarily
Run git stash to save your modified and staged changes, then Git resets your working directory to a clean HEAD. Your work is safely tucked away.
git status
# On branch feature-x
# Changes to be committed:
# new file: new_feature.txt
# Changes not staged for commit:
# modified: index.html
git stash
# Saved working directory and index state WIP on feature-x: ...
# HEAD is now at ...
git status
# On branch feature-x
# nothing to commit, working tree cleanViewing Your Stash Stack
You can hold multiple stashes. git stash list shows them all, each indexed — stash@{0} being the most recent.
git stash list
# stash@{0}: WIP on feature-x: ...
# stash@{1}: WIP on bugfix-branch: ...Bringing Stash Back: Apply
git stash apply restores your most recent stash into the working directory. Want an older one? Name it, like git stash apply stash@{1}.
git checkout bugfix-branch
git stash apply stash@{1}
# On branch bugfix-branch
# Changes not staged for commit:
# modified: bug.jsApply vs. Pop: What's the Difference?
apply vs pop: apply restores changes but keeps the stash in the list; pop restores them and removes the stash. Use pop when you're done with it.
git stash list
# stash@{0}: WIP on feature-x: ...
git stash pop
# On branch feature-x
# Changes not staged for commit:
# modified: index.html
# Dropped stash stash@{0} (...
git stash list
# (empty output, stash is gone)Cleaning Up Stashes
Clean up stashes you no longer need: git stash drop <id> removes one, git stash clear removes all. Clear can't be undone, so be careful.
git stash list
# stash@{0}: WIP on feature-x: ...
# stash@{1}: WIP on old-bug: ...
git stash drop stash@{1}
# Dropped stash stash@{1} (...
git stash list
# stash@{0}: WIP on feature-x: ...Introducing Git Cherry-Pick
Need just one commit from another branch, not its whole history? git cherry-pick applies a single commit's changes onto your current branch.
Applying a Single Commit
Find the commit hash with git log --oneline, switch to your target branch, then git cherry-pick <hash> to bring just that change over.
git log --oneline
# a1b2c3d Fix: Critical typo in header
# e4f5g6h Feat: Add user profiles
git checkout main
# Switched to branch 'main'
git cherry-pick a1b2c3d
# [main] Fix: Critical typo in header
# 1 file changed, 1 insertion(+), 1 deletion(-)Resolving Cherry-Pick Conflicts
Cherry-picking can conflict like a merge. Resolve manually, git add the files, then git cherry-pick --continue — or --abort to cancel.
git cherry-pick a1b2c3d
# Auto-merging header.js
# CONFLICT (content): Merge conflict in header.js
# error: could not apply a1b2c3d...
# (Resolve conflicts, then:)
git add header.js
git cherry-pick --continueStash & Cherry-Pick Quiz
You are on the feature-A branch, with uncommitted changes. An urgent fix needs to go into main. You stash your changes, switch to main, and fix the bug with a commit (hash: 789abc). Now you want to apply this fix to feature-A and return to your work.
Lesson Summary
Recap: git stash shelves uncommitted work so you can switch branches cleanly, and git cherry-pick grabs a single commit from one branch onto another.
Часто задаваемые вопросы
Урок «Откладывание и выборочное применение изменений» бесплатный?
Да — полный текст урока «Откладывание и выборочное применение изменений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Git Advanced: Monorepo, Submodules & Workflows, подпишись на CoddyKit PRO. Курс Git Advanced: Monorepo, Submodules & Workflows содержит 4 уроков всего.
Чему я научусь в уроке «Откладывание и выборочное применение изменений»?
Освойте `git stash` для временного сохранения изменений и `git cherry-pick` для переноса отдельных коммитов между ветками Ты практикуешь Git Advanced: Monorepo, Submodules & Workflows с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Git Advanced: Monorepo, Submodules & Workflows?
Предыдущий опыт не требуется. Git Advanced: Monorepo, Submodules & Workflows на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Откладывание и выборочное применение изменений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Git Advanced: Monorepo, Submodules & Workflows?
Да. Каждый урок Git Advanced: Monorepo, Submodules & Workflows включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Интерактивное перебазирование и изменение коммитов
- Откладывание и выборочное применение изменений
- Reflog для восстановления
- Бисекция: поиск проблемных коммитов