Bird
Raised Fist0
Gitdevops~5 mins

Creating a worktree in Git - Step-by-Step CLI Walkthrough

Choose your learning style10 modes available
Introduction
Sometimes you want to work on different branches of the same project at the same time without switching back and forth. Creating a worktree lets you have multiple working folders linked to one repository, each on its own branch.
When you want to test a new feature on a separate branch without disturbing your current work.
When you need to review or fix bugs on an older branch while continuing new development.
When you want to build or run different versions of your project side by side.
When you want to avoid the time-consuming process of switching branches frequently.
When you want to keep your main working folder clean while experimenting in another folder.
Commands
This command creates a new worktree folder named 'feature-branch' one level up from the current folder. It checks out the 'feature' branch there so you can work on it separately.
Terminal
git worktree add ../feature-branch feature
Expected OutputExpected
Preparing worktree (checking out 'feature') HEAD is now at abcdef1 Commit message on feature branch
This lists the files in the new worktree folder to confirm it has the project files checked out on the 'feature' branch.
Terminal
ls ../feature-branch
Expected OutputExpected
README.md src .gitignore
Shows all the worktrees linked to this repository, including their paths and checked out branches.
Terminal
git worktree list
Expected OutputExpected
/home/user/project abcdef0 [main] /home/user/feature-branch abcdef1 [feature]
Removes the worktree folder 'feature-branch' and unregisters it from the repository when you no longer need it.
Terminal
git worktree remove ../feature-branch
Expected OutputExpected
Deleted worktree ../feature-branch
Key Concept

If you remember nothing else from this pattern, remember: git worktree lets you work on multiple branches at once in separate folders without switching branches.

Common Mistakes
Trying to create a worktree on a branch that does not exist yet.
Git cannot check out a branch that does not exist, so the command fails.
Create the branch first with 'git branch branch-name' or use 'git worktree add -b branch-name path branch-name' to create and check out in one step.
Deleting the worktree folder manually without using 'git worktree remove'.
Git still thinks the worktree exists, causing errors or confusion.
Always remove worktrees with 'git worktree remove path' to unregister them properly.
Summary
Use 'git worktree add path branch' to create a new folder with a separate branch checked out.
Use 'git worktree list' to see all active worktrees linked to your repository.
Use 'git worktree remove path' to cleanly delete a worktree when done.

Practice

(1/5)
1. What is the main purpose of creating a Git worktree?
easy
A. To work on multiple branches simultaneously in separate folders
B. To merge two branches automatically
C. To delete a branch safely
D. To compress the repository size

Solution

  1. Step 1: Understand what a worktree is

    A Git worktree allows you to have multiple working directories linked to the same repository.
  2. Step 2: Identify the main use case

    This lets you work on different branches at the same time without switching branches in one folder.
  3. Final Answer:

    To work on multiple branches simultaneously in separate folders -> Option A
  4. Quick Check:

    Worktree = multiple branches, multiple folders [OK]
Hint: Worktrees = multiple branches open in separate folders [OK]
Common Mistakes:
  • Thinking worktree merges branches
  • Confusing worktree with branch deletion
  • Believing worktree compresses repo
2. Which of the following is the correct syntax to create a new worktree for branch feature in folder ../feature-folder?
easy
A. git worktree add ../feature-folder feature
B. git worktree create feature ../feature-folder
C. git add worktree feature ../feature-folder
D. git worktree new ../feature-folder feature

Solution

  1. Step 1: Recall the correct command structure

    The command to add a worktree is git worktree add <path> <branch>.
  2. Step 2: Match the syntax with options

    git worktree add ../feature-folder feature matches the correct syntax exactly.
  3. Final Answer:

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

    git worktree add path branch = correct syntax [OK]
Hint: Remember: 'git worktree add path branch' is correct syntax [OK]
Common Mistakes:
  • Using 'create' instead of 'add'
  • Swapping branch and path order
  • Using 'git add worktree' which is invalid
3. Given the commands:
git worktree add ../test-branch test
cd ../test-branch
git branch --show-current

What will be the output of the last command?
medium
A. master
B. main
C. test
D. detached HEAD

Solution

  1. Step 1: Understand what 'git worktree add' does

    This command creates a new folder with the specified branch checked out.
  2. Step 2: Check current branch in new worktree

    After changing directory, git branch --show-current shows the branch name checked out, which is 'test'.
  3. Final Answer:

    test -> Option C
  4. Quick Check:

    Worktree folder shows branch name = test [OK]
Hint: Worktree folder shows the branch you added [OK]
Common Mistakes:
  • Assuming default branch 'main' or 'master'
  • Thinking it shows detached HEAD
  • Confusing branch names
4. You run git worktree add ../new-feature without specifying a branch. What will happen?
medium
A. Git creates a new worktree with the current branch checked out
B. Git creates a new branch automatically
C. Git throws an error asking for a branch name
D. Git creates a detached HEAD worktree at the current commit

Solution

  1. Step 1: Check behavior when branch is omitted

    If no branch is specified, Git creates a worktree at the current commit in detached HEAD state.
  2. Step 2: Understand the result

    This means the worktree is not on any branch but on a specific commit.
  3. Final Answer:

    Git creates a detached HEAD worktree at the current commit -> Option D
  4. Quick Check:

    No branch given = detached HEAD worktree [OK]
Hint: No branch? Worktree is detached HEAD at current commit [OK]
Common Mistakes:
  • Expecting an error without branch
  • Thinking it uses current branch name
  • Assuming a new branch is created
5. You want to work on two branches, main and feature, simultaneously. Your repo has no feature branch yet. Which sequence correctly creates a worktree for feature and switches to it?
hard
A. git worktree add ../feature feature cd ../feature
B. git branch feature git worktree add ../feature feature cd ../feature
C. git worktree add ../feature feature cd ../feature git checkout -b feature
D. git checkout -b feature git worktree add ../feature feature cd ../feature

Solution

  1. Step 1: Create the branch before adding worktree

    You must create the branch 'feature' first because it does not exist yet.
  2. Step 2: Add the worktree for the new branch and switch directory

    Then add the worktree pointing to 'feature' and change to that folder.
  3. Final Answer:

    git branch feature git worktree add ../feature feature cd ../feature -> Option B
  4. Quick Check:

    Create branch first, then add worktree [OK]
Hint: Create branch first, then add worktree for it [OK]
Common Mistakes:
  • Adding worktree before branch exists
  • Creating branch inside worktree folder
  • Forgetting to switch directory
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