Bird
Raised Fist0
Gitdevops~10 mins

Cherry-picking multiple commits in Git - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process Flow - Cherry-picking multiple commits
Start on target branch
Identify commits to cherry-pick
Run git cherry-pick <commit1> <commit2> ...
Git applies commits one by one
If conflict occurs?
YesResolve conflict, git cherry-pick --continue
No
All commits applied
End with updated branch
The flow starts on the target branch, identifies commits to pick, applies them one by one, handles conflicts if any, and finishes with the updated branch.
Execution Sample
Git
git checkout feature

git cherry-pick a1b2c3d e4f5g6h

# resolve conflicts if any

git cherry-pick --continue
This code switches to the 'feature' branch and cherry-picks two commits by their hashes, resolving conflicts if they arise.
Process Table
StepActionCommit HashResultNotes
1Checkout target branchN/ASwitched to 'feature'Ready to cherry-pick
2Start cherry-picka1b2c3dApplying commit a1b2c3dNo conflicts
3Commit applieda1b2c3dSuccessCommit added to feature branch
4Start cherry-picke4f5g6hApplying commit e4f5g6hConflict detected
5Resolve conflicte4f5g6hConflict resolved manuallyUser edits files
6Continue cherry-picke4f5g6hCommit appliedCherry-pick complete
7FinishN/AAll commits cherry-pickedFeature branch updated
💡 All commits applied or conflicts resolved; cherry-pick process finished.
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6Final
Current Branchmainfeaturefeaturefeaturefeaturefeaturefeature
Commits Applied001 (a1b2c3d)1 (a1b2c3d)1 (a1b2c3d)2 (a1b2c3d, e4f5g6h)2 (a1b2c3d, e4f5g6h)
Conflict StateNoNoNoYesResolvedNoNo
Key Moments - 3 Insights
Why does git stop during cherry-picking multiple commits?
Git stops if it finds a conflict applying a commit (see Step 4 in execution_table). You must resolve the conflict manually before continuing.
Can you cherry-pick multiple commits in one command?
Yes, you can list multiple commit hashes in one git cherry-pick command (Step 2), and git applies them one by one.
What happens if you don't run 'git cherry-pick --continue' after resolving conflicts?
The cherry-pick process stays paused at the conflicted commit and won't apply the next commits (see Step 6). You must run the continue command to proceed.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the conflict state after Step 4?
ANo conflict
BConflict detected
CConflict resolved
DCherry-pick complete
💡 Hint
Check the 'Conflict State' variable after Step 4 in variable_tracker.
At which step does git apply the first commit successfully?
AStep 3
BStep 4
CStep 2
DStep 6
💡 Hint
Look at the 'Result' column in execution_table for commit a1b2c3d.
If you skip resolving conflicts, what happens to the cherry-pick process?
AIt finishes successfully
BIt skips the conflicted commit
CIt pauses and waits for conflict resolution
DIt automatically resolves conflicts
💡 Hint
Refer to Step 5 and Step 6 in execution_table and the 'Conflict State' in variable_tracker.
Concept Snapshot
git cherry-pick <commit1> <commit2> ...
- Applies listed commits one by one to current branch
- Stops if conflicts occur; resolve and run git cherry-pick --continue
- Use to copy specific commits without merging whole branches
- Always start on the target branch before cherry-picking
Full Transcript
Cherry-picking multiple commits means applying specific commits from another branch onto your current branch. First, switch to the branch where you want the commits. Then run git cherry-pick with the commit hashes you want. Git applies each commit in order. If a conflict happens, git pauses. You must fix the conflict manually, then run git cherry-pick --continue to proceed. When all commits are applied, your branch has those changes without merging the entire source branch.

Practice

(1/5)
1. What does the git cherry-pick command do when used with multiple commit hashes?
easy
A. It applies the changes from each specified commit onto the current branch.
B. It merges the entire branch containing those commits into the current branch.
C. It deletes the specified commits from the current branch.
D. It creates a new branch with the specified commits only.

Solution

  1. Step 1: Understand cherry-pick purpose

    The git cherry-pick command copies changes from specific commits to the current branch without merging the whole branch.
  2. Step 2: Effect of multiple commits

    When multiple commit hashes are listed, git applies each commit's changes one by one onto the current branch.
  3. Final Answer:

    It applies the changes from each specified commit onto the current branch. -> Option A
  4. Quick Check:

    Cherry-pick = copy specific commits [OK]
Hint: Cherry-pick copies commits, it does NOT merge branches [OK]
Common Mistakes:
  • Confusing cherry-pick with merge
  • Thinking it deletes commits
  • Assuming it creates a new branch
2. Which of the following is the correct syntax to cherry-pick multiple commits with hashes a1b2c3 and d4e5f6?
easy
A. git cherry-pick --all a1b2c3 d4e5f6
B. git cherry-pick a1b2c3,d4e5f6
C. git cherry-pick -m a1b2c3 d4e5f6
D. git cherry-pick a1b2c3 d4e5f6

Solution

  1. Step 1: Review cherry-pick syntax

    The correct way to cherry-pick multiple commits is to list their hashes separated by spaces, not commas or flags.
  2. Step 2: Analyze options

    git cherry-pick a1b2c3 d4e5f6 uses spaces between commit hashes without extra flags, which is the correct syntax.
  3. Final Answer:

    git cherry-pick a1b2c3 d4e5f6 -> Option D
  4. Quick Check:

    Multiple commits separated by spaces [OK]
Hint: Separate commit hashes by spaces, not commas [OK]
Common Mistakes:
  • Using commas between commit hashes
  • Adding unnecessary flags
  • Using incorrect options like --all
3. Given the following commands run on branch feature:
git checkout feature
git cherry-pick 123abc 456def
What will happen if both commits apply cleanly?
medium
A. Only the first commit 123abc will be applied, the second will be ignored.
B. The changes from commits 123abc and 456def will be added to the feature branch in order.
C. Git will merge the branches containing those commits into feature.
D. An error will occur because multiple commits cannot be cherry-picked at once.

Solution

  1. Step 1: Understand cherry-pick with multiple commits

    When multiple commits are cherry-picked, git applies each commit sequentially if no conflicts occur.
  2. Step 2: Effect on current branch

    Since the branch is feature, the changes from both commits will be added in the order listed.
  3. Final Answer:

    The changes from commits 123abc and 456def will be added to the feature branch in order. -> Option B
  4. Quick Check:

    Multiple commits apply sequentially [OK]
Hint: Cherry-pick applies commits one by one in order [OK]
Common Mistakes:
  • Assuming only first commit applies
  • Confusing cherry-pick with merge
  • Thinking multiple commits cause errors
4. You run git cherry-pick abc123 def456 but get a conflict on the second commit. What should you do to continue cherry-picking the remaining commits?
medium
A. Fix the conflict, then run git cherry-pick --continue to proceed.
B. Abort the cherry-pick with git cherry-pick --abort and start over.
C. Run git reset --hard to discard changes and continue.
D. Use git cherry-pick --skip immediately without fixing conflicts.

Solution

  1. Step 1: Handle conflicts during cherry-pick

    When a conflict occurs, you must manually fix it before continuing.
  2. Step 2: Continue cherry-pick process

    After fixing conflicts, running git cherry-pick --continue resumes applying remaining commits.
  3. Final Answer:

    Fix the conflict, then run git cherry-pick --continue to proceed. -> Option A
  4. Quick Check:

    Fix conflicts + git cherry-pick --continue [OK]
Hint: Fix conflicts then run git cherry-pick --continue [OK]
Common Mistakes:
  • Skipping conflicts without fixing
  • Aborting instead of continuing
  • Resetting hard loses work
5. You want to cherry-pick commits 111aaa, 222bbb, and 333ccc from branch dev onto main. However, 222bbb depends on changes in 111aaa, but 333ccc is unrelated. Which command correctly cherry-picks only the dependent commits in order?
hard
A. git checkout main && git cherry-pick 333ccc 111aaa 222bbb
B. git checkout main && git cherry-pick 222bbb 111aaa
C. git checkout main && git cherry-pick 111aaa 222bbb
D. git checkout main && git cherry-pick 111aaa,222bbb

Solution

  1. Step 1: Identify dependent commits

    Since 222bbb depends on 111aaa, both must be cherry-picked in order to avoid errors.
  2. Step 2: Choose correct command syntax and order

    git checkout main && git cherry-pick 111aaa 222bbb checks out main and cherry-picks commits in the correct order separated by spaces.
  3. Final Answer:

    git checkout main && git cherry-pick 111aaa 222bbb -> Option C
  4. Quick Check:

    Dependent commits cherry-picked in order [OK]
Hint: Cherry-pick dependent commits in order, skip unrelated [OK]
Common Mistakes:
  • Cherry-picking commits in wrong order
  • Including unrelated commits unnecessarily
  • Using commas instead of spaces