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 does git reset --soft do?
Moves the HEAD to a specified commit but keeps changes staged in the index and working directory unchanged.
Click to reveal answer
beginner
What is the effect of git reset --mixed?
Moves HEAD to a specified commit and unstages changes, but keeps them in the working directory.
Click to reveal answer
beginner
What happens when you run git reset --hard?
Moves HEAD to a specified commit and discards all changes in the index and working directory, resetting everything to that commit.
Click to reveal answer
beginner
Which git reset option keeps your changes staged?
--soft keeps changes staged after moving HEAD.
Click to reveal answer
beginner
Which git reset option discards all local changes?
--hard discards all local changes in the working directory and index.
Click to reveal answer
What does git reset --soft HEAD~1 do?
AMoves HEAD back one commit and keeps changes staged
BMoves HEAD back one commit and unstages changes
CMoves HEAD back one commit and discards all changes
DDoes nothing
✗ Incorrect
--soft moves HEAD but keeps changes staged in the index.
Which reset option unstages changes but keeps them in the working directory?
A--soft
B--hard
C--keep
D--mixed
✗ Incorrect
--mixed resets the index but not the working directory.
What is the risk of using git reset --hard?
AIt may delete uncommitted changes permanently
BIt only unstages changes
CIt creates a new commit
DIt pushes changes to remote
✗ Incorrect
--hard discards all uncommitted changes, which cannot be recovered easily.
After git reset --mixed, where are your changes?
AStaged in the index
BIn the working directory but unstaged
CDeleted
DCommitted
✗ Incorrect
Changes remain in the working directory but are unstaged.
Which command moves HEAD but leaves both index and working directory unchanged?
Agit reset --hard
Bgit reset --mixed
Cgit reset --soft
Dgit checkout
✗ Incorrect
--soft moves HEAD only, keeping index and working directory intact.
Explain the differences between git reset --soft, --mixed, and --hard in your own words.
Think about what happens to HEAD, index (staging), and working directory.
You got /3 concepts.
When would you use git reset --hard and what should you be careful about?
Consider the risk of losing work.
You got /3 concepts.
Practice
(1/5)
1. What does git reset --soft do to your changes after undoing a commit?
easy
A. It unstages the changes but keeps them in the folder.
B. It removes the changes from both staging and folder.
C. It keeps the changes staged and ready to commit again.
D. It deletes the commit and all changes permanently.
Solution
Step 1: Understand git reset --soft effect
This option moves the HEAD pointer back but keeps all changes staged.
Step 2: Compare with other reset types
Unlike mixed or hard, soft reset does not unstage or delete changes.
Final Answer:
It keeps the changes staged and ready to commit again. -> Option C
Quick Check:
soft reset = keep staged changes [OK]
Hint: Soft reset keeps changes staged for quick recommit [OK]
Common Mistakes:
Confusing soft with mixed reset
Thinking soft deletes changes
Assuming soft unstages changes
2. Which of the following is the correct syntax to undo the last commit but keep changes unstaged?
easy
A. git reset --keep HEAD~1
B. git reset --soft HEAD~1
C. git reset --hard HEAD~1
D. git reset --mixed HEAD~1
Solution
Step 1: Identify the reset option for unstaging changes
The --mixed option resets the commit and unstages changes but keeps them in the folder.
Step 2: Verify syntax correctness
All commands use HEAD~1 to move one commit back; --mixed is the default and correct option here.
Final Answer:
git reset --mixed HEAD~1 -> Option D
Quick Check:
mixed reset = unstage but keep changes [OK]
Hint: Mixed reset unstages but keeps changes in folder [OK]
Common Mistakes:
Using --soft when unstaging is needed
Using --hard which deletes changes
Using invalid --keep option
3. Given you committed changes but want to undo the commit and remove all changes from your working folder, what will be the result of git reset --hard HEAD~1?
medium
A. The commit is undone, changes remain staged.
B. The commit is undone, changes are deleted from folder and staging.
C. The commit is undone, changes remain unstaged in folder.
D. The commit is undone, changes are saved in stash.
Solution
Step 1: Understand --hard reset effect
This option resets the commit and deletes all changes from both staging and working folder.
Step 2: Confirm no changes remain
After hard reset, the working folder matches the commit pointed by HEAD, so changes are lost.
Final Answer:
The commit is undone, changes are deleted from folder and staging. -> Option B
Quick Check:
hard reset = delete changes from folder and staging [OK]
Hint: Hard reset deletes changes from folder and staging [OK]
Common Mistakes:
Thinking hard reset keeps changes staged
Confusing hard with mixed reset
Assuming changes are saved in stash automatically
4. You ran git reset --soft HEAD~1 but your changes disappeared from staging. What is the likely cause?
medium
A. You ran git reset --mixed instead of soft.
B. You committed new changes after reset.
C. Your Git version does not support --soft option.
D. You actually ran git reset --hard by mistake.
Solution
Step 1: Analyze why changes are unstaged
Soft reset keeps changes staged; if changes disappeared from staging, mixed reset was likely used.
Step 2: Check command confusion
Mixed reset unstages changes but keeps them in folder, matching the symptom.
Final Answer:
You ran git reset --mixed instead of soft. -> Option A
Hint: Unstaged changes? Check if mixed reset was used instead of soft [OK]
Common Mistakes:
Confusing soft and mixed reset effects
Assuming Git version lacks --soft support
Thinking reset deletes changes automatically
5. You committed changes but realize you want to undo the commit, keep the changes unstaged, and then selectively stage some files. Which command sequence achieves this?
hard
A. git reset --mixed HEAD~1; git add <files>
B. git reset --soft HEAD~1; git add <files>
C. git reset --hard HEAD~1; git add <files>
D. git reset --soft HEAD~1; git reset HEAD <files>
Solution
Step 1: Undo commit and unstage changes
git reset --mixed HEAD~1 moves HEAD back, unstages changes but keeps them in folder.
Step 2: Selectively stage files
Use git add <files> to stage only desired files after unstaging.
Final Answer:
git reset --mixed HEAD~1; git add <files> -> Option A