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
Recall & Review
beginner
What is the purpose of git rebase -i?
It allows you to edit, reorder, squash, or remove commits in a branch history before sharing it.
Click to reveal answer
beginner
In an interactive rebase, what does the command pick mean?
It means to keep the commit as is during the rebase process.
Click to reveal answer
intermediate
What does the squash command do in git rebase -i?
It combines the current commit with the previous one, merging their changes and messages.
Click to reveal answer
beginner
How do you start an interactive rebase to edit the last 3 commits?
Run git rebase -i HEAD~3 to open the last 3 commits for editing.
Click to reveal answer
intermediate
What happens if you reorder commits in the interactive rebase editor?
Git will replay the commits in the new order, changing the commit history accordingly.
Click to reveal answer
What does git rebase -i HEAD~4 do?
AOpens the last 4 commits for interactive editing
BDeletes the last 4 commits
CCreates 4 new commits
DPushes 4 commits to remote
✗ Incorrect
The command opens the last 4 commits in an editor for interactive rebase.
Which command in the interactive rebase editor combines commits?
Apick
Bedit
Cdrop
Dsquash
✗ Incorrect
The 'squash' command merges a commit into the previous one.
If you want to completely remove a commit during interactive rebase, which command do you use?
Apick
Bdrop
Cedit
Dreword
✗ Incorrect
The 'drop' command removes the commit from history.
What does the edit command do in an interactive rebase?
AStops to allow changes to the commit
BKeeps the commit unchanged
CDeletes the commit
DCombines commits
✗ Incorrect
The 'edit' command pauses the rebase so you can change the commit.
After finishing an interactive rebase, what should you do if you already pushed the original commits?
ANothing, just continue working
BDelete the remote branch
CForce push the branch to update remote history
DCreate a new branch
✗ Incorrect
You need to force push to update the remote branch with rewritten history.
Explain how to use git rebase -i to combine two commits into one.
Think about opening commits for editing and merging them.
You got /4 concepts.
Describe what happens when you reorder commits during an interactive rebase.
Imagine rearranging steps in a recipe.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of using git rebase -i (interactive rebase)?
easy
A. To reorder, edit, or combine recent commits before sharing
B. To create a new branch from the current commit
C. To permanently delete the entire commit history
D. To push commits directly to the remote repository
Solution
Step 1: Understand the purpose of interactive rebase
Interactive rebase allows you to change the order, combine, edit, or remove recent commits.
Step 2: Compare with other git commands
Creating branches, deleting history, or pushing commits are different git operations.
Final Answer:
To reorder, edit, or combine recent commits before sharing -> Option A
Quick Check:
Interactive rebase = reorder/edit commits [OK]
Hint: Interactive rebase = rewrite recent commits easily [OK]
Common Mistakes:
Confusing rebase with branch creation
Thinking it deletes all history
Assuming it pushes commits automatically
2. Which of the following is the correct command to start an interactive rebase for the last 3 commits?
easy
A. git rebase -i HEAD^^3
B. git rebase -i HEAD~3
C. git rebase -i HEAD~
D. git rebase -i HEAD^3
Solution
Step 1: Recall the syntax for interactive rebase
The correct syntax uses HEAD~N to specify the last N commits, so HEAD~3 means last 3 commits.
Step 2: Check the options
HEAD^3 and HEAD^^3 are invalid for this purpose; HEAD~ alone is incomplete.
Final Answer:
git rebase -i HEAD~3 -> Option B
Quick Check:
HEAD~3 selects last 3 commits [OK]
Hint: Use HEAD~N to select last N commits for rebase [OK]
Common Mistakes:
Using HEAD^3 instead of HEAD~3
Omitting the number after ~
Using double carets ^^ incorrectly
3. Given the following interactive rebase todo list:
pick a1b2c3 Commit A
pick d4e5f6 Commit B
pick 789abc Commit C
If you change it to:
pick d4e5f6 Commit B
squash 789abc Commit C
pick a1b2c3 Commit A
What will happen after completing the rebase?
medium
A. Only Commit C will be applied, others dropped
B. Commits A and B will be combined, Commit C will be last
C. The rebase will fail due to invalid order
D. Commits B and C will be combined, and Commit A will be last
Solution
Step 1: Understand 'pick' and 'squash' in rebase
'pick' applies a commit as is; 'squash' combines the commit with the previous one.
Step 2: Analyze the new order
Commit B is picked first, Commit C is squashed into B, Commit A is picked last.
Final Answer:
Commits B and C will be combined, and Commit A will be last -> Option D
Quick Check:
squash merges commits; order changed [OK]
Hint: Squash merges commit into previous one in order [OK]
Common Mistakes:
Thinking squash drops commits
Assuming order stays same after rebase
Confusing squash with fixup
4. You run git rebase -i HEAD~2 and change the second commit's action from pick to edit. After saving, what should you do next to modify that commit?
medium
A. Make changes, then run git commit --amend and git rebase --continue
B. Run git push immediately to update remote
C. Abort the rebase with git rebase --abort
D. Run git reset --hard HEAD~1 to undo the commit
Solution
Step 1: Understand 'edit' in interactive rebase
When a commit is marked 'edit', rebase pauses to let you change it.
Step 2: Modify commit and continue rebase
You make changes, amend the commit with git commit --amend, then continue with git rebase --continue.
Final Answer:
Make changes, then run git commit --amend and git rebase --continue -> Option A
Quick Check:
Edit = amend commit + continue rebase [OK]
Hint: Edit commit: amend changes, then continue rebase [OK]
Common Mistakes:
Pushing before finishing rebase
Aborting instead of continuing
Resetting commits incorrectly
5. You want to clean up your last 4 commits by combining the second and third commits into one, and also reorder commits so the last commit becomes the first. Which interactive rebase todo list correctly achieves this?