Skip to main content
All actions start from the left sidebar.

Creating a worktree

This creates a new branch from the repository’s default branch, and a folder with that branch checked out, in one step.
1

Click the + button

Hover over a repository row in the sidebar and click the + button (Add worktree) that appears.
The Create Worktree dialog, showing the New branch name field, the auto-filled Worktree path field with a Browse… button, and the Base display below it
2

Enter the new branch name

Enter the name of the branch you want to create. The dialog shows the base branch below, as Base: main; the base resolves in the order origin/HEAD → local main → local master.
3

Check the worktree path

The path is auto-suggested in the form <repo-parent>/<repo-name>-<branch>, and any / in the branch name is replaced with -. Until you edit it directly, it updates to follow the branch name, and you can change the parent folder with Browse….
4

Create

Click Create and the new worktree is created and automatically selected.
If no base branch can be found (no main, master, or origin/HEAD exists), creation is blocked. If the path is not empty, or the branch name is a duplicate or invalid, Git rejects it and the failure toast shows the reason.

Switching worktrees

Click a worktree row in the sidebar to switch to it. When you actually switch to a different worktree, every open diff tab closes and the view resets to a single History tab.
The screen right after switching to another worktree, with only the History tab left in the tab bar and the newly selected worktree row highlighted in the sidebar
The commit graph, repository overview, and Working copy state are cached per worktree. They reappear quickly when you switch back and forth. See Per-worktree state.

Deleting a worktree

1

Reveal the delete button

Hover over a linked worktree row and a trash icon appears where the ahead/behind counter normally sits.
2

Review the options

The dialog has two toggles (both off by default).
  • Also delete branch also deletes the branch that was checked out. If Force delete is off, deletion is refused for a branch that hasn’t been merged. It doesn’t appear for a detached HEAD worktree.
  • Force delete also removes a worktree that has uncommitted changes. With Also delete branch turned on as well, the label becomes Force delete (discard uncommitted changes, and the branch even if unmerged), and an unmerged branch is deleted too.
The Delete Worktree confirmation dialog, with the path of the worktree to delete followed by the Also delete branch toggle and the Force delete toggle in that order, both off
3

Confirm the deletion

Click Delete. If the deleted worktree was selected, the selection moves to the main worktree.
The main worktree has no delete button.Turning on Force delete makes that folder’s uncommitted changes disappear. With Also delete branch on as well, unmerged commits are lost along with it.
If the worktree is deleted but only the branch deletion fails, a warning toast reports the partial failure.

When a locked worktree refuses to delete

When deletion fails, the risk escalates one step at a time.
  1. It fails with Force delete off, and the failure toast has no action button. It reports the cause (uncommitted changes or a lock), and to move on you have to reopen the dialog and turn on Force delete yourself.
  2. Force delete is blocked by a lock, and only now does the toast show a Delete ignoring lock button. Git’s original error message includes the lock reason, so you can see who locked it. If the failure isn’t due to a lock, the button doesn’t appear.
  3. Ignoring the lock also fails, and no retry button is attached anymore. You have to read the error message and resolve it yourself.
A worktree lock is a safeguard that another tool or session sets while it’s using that worktree. Before you click Delete ignoring lock, read the lock reason in the error message. Doing so can destroy a workspace that’s still active.