Bird
Raised Fist0
Gitdevops~20 mins

git reset soft vs mixed vs hard - Practice Questions

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
Challenge - 5 Problems
🎖️
Git Reset Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Difference between git reset --soft and git reset --mixed

After running git reset --soft HEAD~1, what happens to the changes from the last commit?

AThe changes remain staged in the index, ready to commit again.
BThe changes are unstaged and moved to the working directory.
CThe changes are discarded completely from the working directory and index.
DThe changes are saved in a new branch automatically.
Attempts:
2 left
💡 Hint

Think about what --soft means for the staging area (index).

🧠 Conceptual
intermediate
2:00remaining
Effect of git reset --hard on working directory

What is the effect of running git reset --hard HEAD~1 on your working directory?

AIt creates a new commit undoing the last commit.
BIt resets HEAD but keeps changes staged in the index.
CIt resets HEAD and unstages changes but keeps them in the working directory.
DIt resets HEAD and discards all changes in the working directory and index to match the previous commit.
Attempts:
2 left
💡 Hint

Consider what --hard means for both index and working directory.

💻 Command Output
advanced
2:30remaining
Output after git reset --mixed

Given a repository with one commit and some changes staged and unstaged, what is the state of the index and working directory after running git reset --mixed HEAD~1?

AHEAD moves back one commit, index is reset to that commit, unstaged changes remain in working directory.
BHEAD moves back one commit, changes remain staged in index, working directory unchanged.
CHEAD moves back one commit, all changes discarded from index and working directory.
DHEAD moves back one commit, changes are saved in stash automatically.
Attempts:
2 left
💡 Hint

Remember --mixed resets the index but not the working directory.

Troubleshoot
advanced
3:00remaining
Recovering a lost commit after git reset --hard

You accidentally ran git reset --hard HEAD~1 and lost the last commit. Which command can help you recover it?

A<code>git stash pop</code> to recover changes automatically.
B<code>git revert HEAD~1</code> to undo the reset.
C<code>git reflog</code> to find the previous HEAD and then <code>git reset</code> to restore.
D<code>git checkout -- .</code> to restore all files.
Attempts:
2 left
💡 Hint

Think about how Git tracks HEAD movements even after resets.

Best Practice
expert
3:00remaining
Choosing the right git reset mode for undoing commits safely

You want to undo the last commit but keep your changes safe and ready to edit before recommitting. Which git reset mode should you use?

A<code>git reset --hard HEAD~1</code> to discard changes and reset everything.
B<code>git reset --soft HEAD~1</code> to keep changes staged for editing.
C<code>git revert HEAD</code> to create a new commit undoing the last one.
D<code>git reset --mixed HEAD~1</code> to unstage changes but keep them in working directory.
Attempts:
2 left
💡 Hint

Consider which reset mode keeps changes staged for easy recommit.

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

  1. Step 1: Understand git reset --soft effect

    This option moves the HEAD pointer back but keeps all changes staged.
  2. Step 2: Compare with other reset types

    Unlike mixed or hard, soft reset does not unstage or delete changes.
  3. Final Answer:

    It keeps the changes staged and ready to commit again. -> Option C
  4. 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

  1. Step 1: Identify the reset option for unstaging changes

    The --mixed option resets the commit and unstages changes but keeps them in the folder.
  2. Step 2: Verify syntax correctness

    All commands use HEAD~1 to move one commit back; --mixed is the default and correct option here.
  3. Final Answer:

    git reset --mixed HEAD~1 -> Option D
  4. 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

  1. Step 1: Understand --hard reset effect

    This option resets the commit and deletes all changes from both staging and working folder.
  2. Step 2: Confirm no changes remain

    After hard reset, the working folder matches the commit pointed by HEAD, so changes are lost.
  3. Final Answer:

    The commit is undone, changes are deleted from folder and staging. -> Option B
  4. 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

  1. Step 1: Analyze why changes are unstaged

    Soft reset keeps changes staged; if changes disappeared from staging, mixed reset was likely used.
  2. Step 2: Check command confusion

    Mixed reset unstages changes but keeps them in folder, matching the symptom.
  3. Final Answer:

    You ran git reset --mixed instead of soft. -> Option A
  4. Quick Check:

    Mixed reset unstages changes, soft keeps staged [OK]
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

  1. Step 1: Undo commit and unstage changes

    git reset --mixed HEAD~1 moves HEAD back, unstages changes but keeps them in folder.
  2. Step 2: Selectively stage files

    Use git add <files> to stage only desired files after unstaging.
  3. Final Answer:

    git reset --mixed HEAD~1; git add <files> -> Option A
  4. Quick Check:

    Mixed reset + selective add stages chosen files [OK]
Hint: Use mixed reset to unstage, then add files selectively [OK]
Common Mistakes:
  • Using soft reset which keeps all changes staged
  • Using hard reset which deletes changes
  • Trying to unstage files after soft reset