Bird
Raised Fist0
Gitdevops~5 mins

git reset soft vs mixed vs hard - Quick Revision & Key Differences

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
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
Which reset option unstages changes but keeps them in the working directory?
A--soft
B--hard
C--keep
D--mixed
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
After git reset --mixed, where are your changes?
AStaged in the index
BIn the working directory but unstaged
CDeleted
DCommitted
Which command moves HEAD but leaves both index and working directory unchanged?
Agit reset --hard
Bgit reset --mixed
Cgit reset --soft
Dgit checkout
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

      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