Bird
Raised Fist0
Gitdevops~20 mins

Worktrees vs stashing decision in Git - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Worktrees vs Stashing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
When to use git worktree instead of git stash?

You have uncommitted changes and want to switch to a different branch to test something without losing your current work. Which situation best fits using git worktree instead of git stash?

AYou want to temporarily save changes and clean your working directory to switch branches quickly.
BYou want to discard all current changes and start fresh on a new branch.
CYou want to merge your current changes into the other branch without switching.
DYou want to keep your current changes visible and editable while working on another branch simultaneously.
Attempts:
2 left
💡 Hint

Think about whether you want to work on two branches at the same time with your changes visible.

💻 Command Output
intermediate
1:30remaining
Output of git stash list after stashing changes

You run the following commands in a git repository:

echo 'change' >> file.txt
git stash

What will git stash list show immediately after?

Git
git stash list
Aerror: no stash found.
BNo stash entries found.
Cstash@{0}: WIP on main: <commit-hash> <commit-message>
Dstash@{1}: WIP on main: <commit-hash> <commit-message>
Attempts:
2 left
💡 Hint

Think about what stash numbering starts at and what happens after the first stash.

🔀 Workflow
advanced
2:30remaining
Correct sequence to create and use a git worktree

You want to create a new worktree for branch feature in a directory ../feature-worktree. Which sequence of commands correctly achieves this?

A1,2,4
B2,1,3
C1,3,2
D4,1,2
Attempts:
2 left
💡 Hint

Remember that git worktree add creates and checks out the branch automatically.

❓ Troubleshoot
advanced
2:00remaining
Error when switching branches with uncommitted changes

You try to switch branches with git checkout feature but get this error:

error: Your local changes to the following files would be overwritten by checkout:

What is the best way to handle this if you want to keep your changes but also switch branches?

AUse <code>git reset --hard</code> to discard changes, then switch branches.
BUse <code>git worktree add</code> to create a new worktree for the other branch.
CUse <code>git commit -a -m 'temp'</code> to commit changes, then switch branches.
DUse <code>git stash</code> to save changes, switch branches, then <code>git stash pop</code> to reapply.
Attempts:
2 left
💡 Hint

Consider how to keep your current changes visible and work on another branch simultaneously.

✅ Best Practice
expert
3:00remaining
Choosing between git stash and git worktree for parallel feature development

You are developing two features in parallel. You want to switch between them frequently without losing work or creating many commits. Which approach is best?

AUse <code>git worktree</code> to have separate working directories for each feature branch.
BUse <code>git reset --hard</code> to discard changes before switching branches.
CCommit partial work on one branch before switching to the other branch.
DUse <code>git stash</code> to save and restore changes each time you switch branches.
Attempts:
2 left
💡 Hint

Think about how to keep work visible and avoid repeated stashing or committing.

Practice

(1/5)
1. What is the main purpose of git stash in Git?
easy
A. Create a new branch in a separate folder
B. Temporarily save changes and clean the working directory
C. Merge two branches automatically
D. Delete untracked files from the repository

Solution

  1. Step 1: Understand what git stash does

    git stash saves your current changes temporarily and cleans your working directory so you can switch branches or work on something else without committing.
  2. Step 2: Compare with other options

    Creating a new branch in a separate folder is done with worktrees, not stash. Merging branches and deleting untracked files are unrelated commands.
  3. Final Answer:

    Temporarily save changes and clean the working directory -> Option B
  4. Quick Check:

    Stash = Temporary save changes [OK]
Hint: Stash saves changes fast, worktrees create folders [OK]
Common Mistakes:
  • Confusing stash with branch creation
  • Thinking stash deletes files permanently
  • Mixing stash with merge operations
2. Which command correctly creates a new worktree for branch feature in folder feature-folder?
easy
A. git worktree add feature-folder feature
B. git stash create feature-folder feature
C. git branch add feature-folder feature
D. git checkout -b feature feature-folder

Solution

  1. Step 1: Recall the syntax for adding a worktree

    The correct syntax is git worktree add <path> <branch>. So git worktree add feature-folder feature creates a new folder with the branch checked out.
  2. Step 2: Check other options for correctness

    git stash create is invalid for this purpose. git branch add is not a valid command. git checkout -b creates a branch but does not create a separate folder.
  3. Final Answer:

    git worktree add feature-folder feature -> Option A
  4. Quick Check:

    Worktree add = git worktree add [OK]
Hint: Worktree add uses: git worktree add folder branch [OK]
Common Mistakes:
  • Using stash commands to create worktrees
  • Confusing branch creation with worktree creation
  • Incorrect order of arguments in commands
3. You have uncommitted changes on branch main. You want to switch to feature branch without losing changes. What happens if you run git stash then git checkout feature?
medium
A. Git throws an error and refuses to switch branches
B. Changes are lost permanently after checkout
C. Changes are saved temporarily, branch switches cleanly
D. Changes are automatically merged into feature branch

Solution

  1. Step 1: Understand what git stash does before switching

    git stash saves your uncommitted changes safely and cleans your working directory so you can switch branches without conflicts.
  2. Step 2: Effect of git checkout feature after stash

    Since the working directory is clean after stash, Git switches to feature branch without errors or losing changes. You can later apply the stash.
  3. Final Answer:

    Changes are saved temporarily, branch switches cleanly -> Option C
  4. Quick Check:

    Stash saves changes, checkout switches branch [OK]
Hint: Stash before checkout saves changes safely [OK]
Common Mistakes:
  • Assuming changes are lost after stash
  • Expecting automatic merge of stashed changes
  • Thinking Git errors on switching with stash
4. You tried to create a worktree with git worktree add feature but got an error. What is the most likely cause?
medium
A. The folder name is missing, causing a syntax error
B. You have uncommitted changes that block worktree creation
C. The branch feature does not exist
D. You forgot to stash changes before adding worktree

Solution

  1. Step 1: Check the command syntax

    git worktree add requires two arguments: folder path and branch name. The command git worktree add feature only has one argument, so it is missing the folder name.
  2. Step 2: Understand error cause

    Missing folder argument causes Git to throw a syntax error. Uncommitted changes or branch existence issues cause different errors, but syntax error is most likely here.
  3. Final Answer:

    The folder name is missing, causing a syntax error -> Option A
  4. Quick Check:

    Worktree add needs folder and branch [OK]
Hint: Worktree add needs folder then branch [OK]
Common Mistakes:
  • Ignoring missing folder argument
  • Assuming uncommitted changes block worktree add
  • Confusing stash necessity with worktree creation
5. You want to work on two branches, main and feature, simultaneously without committing unfinished work on main. Which approach is best?
hard
A. Use git stash to save changes on main and switch branches repeatedly
B. Delete the feature branch and work only on main
C. Commit unfinished work on main before switching to feature
D. Create a worktree for feature branch to work in a separate folder

Solution

  1. Step 1: Understand the need for parallel work

    You want to work on two branches at the same time without committing unfinished work on main. Stashing and switching repeatedly is slow and error-prone.
  2. Step 2: Choose the best tool for parallel branch work

    Worktrees allow you to have multiple branches checked out in different folders simultaneously. This lets you work on main and feature side by side without switching or stashing.
  3. Final Answer:

    Create a worktree for feature branch to work in a separate folder -> Option D
  4. Quick Check:

    Worktrees = parallel branches in folders [OK]
Hint: Worktrees let you work on branches side-by-side [OK]
Common Mistakes:
  • Using stash repeatedly instead of worktrees
  • Committing unfinished work prematurely
  • Deleting needed branches accidentally
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard