Worktrees+
Parallel git worktrees for feature work and PR reviews — UI-first.

Stop stashing. Stop switching branches mid-task. Open every PR review and every feature branch as its own VS Code window — each with its own files, terminal, and dev server — without leaving the editor.
📸 Screenshot of the sidebar with multiple worktrees, status badges, and quick-action buttons goes here. Add media/screenshot-sidebar.png and reference it like: 
Why?
Git worktrees let you check out multiple branches simultaneously, each in its own folder. But the CLI is awkward, easy to forget, and doesn't handle the surrounding ceremony (gitignore, env files, install commands, opening windows).
Worktrees+ makes the entire workflow one-click:
- New feature? Click
+, type the branch name, get a fresh VS Code window with deps installed
- PR to review? Click 🔀, enter the PR number, get an isolated detached worktree
- Want to switch? Click the status bar, pick a worktree, jump to that window
- Done? Click
🗑️, the folder and registration are cleaned up
No commands to memorize. No terminal commands to type.
Features
One-click worktree creation
Three buttons in the sidebar — feature branches, PR reviews, and existing branches — each handled with smart defaults.
📸 Screenshot/GIF of clicking + and seeing a new window open
Status at a glance
Every worktree row shows whether it has uncommitted changes (● 3), how far it's diverged from main (↑5 ↓2), and what state it's in (clean, dirty, detached, locked, or prunable).
📸 Screenshot of the sidebar with status badges visible
Auto-install and auto-config
When a worktree is created, Worktrees+ automatically:
- Adds
.worktrees/ to your .gitignore
- Copies gitignored config files (
.env.local, etc.)
- Detects your package manager (pnpm/yarn/npm/bun) and runs install
- Opens the new worktree in its own VS Code window
PR review without commit risk
The "Review PR" command checks out the PR head as a detached HEAD worktree — so you literally can't accidentally commit to someone else's PR branch. When done, one click removes it entirely.
Status bar integration
The current worktree's branch is always visible in the bottom-left status bar. Click it to switch to any other worktree (opens in a new window).
📸 Screenshot of the status bar item
Friendly errors
Instead of raw git error text, Worktrees+ translates errors into actionable messages:
- "Already checked out" → button to open the existing worktree
- "Has uncommitted changes" → button to Force Remove
- Anything else → "Show Log" button jumps to the Output channel for full git output
UI-first, command-fallback
Every action is available via the sidebar UI. Every action is also available in the command palette (Cmd/Ctrl+Shift+P → type "Worktrees") for keyboard-driven workflows.
Getting started
- Install Worktrees+
- Open any git repository in VS Code
- Click the branched-fork icon in the activity bar
- Click the + at the top of the panel
- Enter a branch name → done
Configuration
All settings live under worktreesPlus.*:
| Setting |
Default |
Description |
location |
subfolder |
Where to create worktrees: subfolder (inside repo), sibling (next to repo), or custom |
subfolderName |
.worktrees |
Folder name when using subfolder mode |
customPath |
"" |
Custom path when location=custom |
autoInstall |
true |
Run npm/pnpm/yarn/bun install after creating a worktree |
copyFiles |
[".env", ".env.local", ".env.development", ".env.development.local"] |
Gitignored files to copy into new worktrees |
baseBranch |
main |
Default base branch for new feature worktrees |
openInNewWindow |
true |
Open new worktree in new VS Code window after creation |
showStatus |
true |
Show dirty file count and ahead/behind indicators next to each worktree |
Commands
All commands available in command palette with Worktrees: prefix.
| Command |
Description |
Worktrees: New Feature Worktree... |
Create a worktree with a new branch |
Worktrees: Checkout PR for Review... |
Fetch a PR head and create a detached worktree |
Worktrees: Checkout Existing Branch as Worktree... |
Pick a local or remote branch, create a worktree |
Worktrees: Switch Worktree... |
Quick-pick to open any worktree in a new window |
Worktrees: Prune Stale Worktrees |
Clean up registrations for missing folders |
Worktrees: Show Log |
Open the Output channel with full git command history |
How PR review works
You: click 🔀 → enter "1234"
Worktrees+ runs:
git fetch origin pull/1234/head:pr-1234
git worktree add --detach .worktrees/pr-1234 pr-1234
cp .env.local .worktrees/pr-1234/
cd .worktrees/pr-1234 && pnpm install
code .worktrees/pr-1234 --new-window
You end up in a new VS Code window, on the PR's code, with dependencies installed, ready to test. Total: ~one click for you.
Compared to other extensions
The VS Code Marketplace has several worktree extensions. Worktrees+ aims to be the one with:
- UI for everything — no command palette required, every action is a button
- PR review as a first-class flow — built-in
pull/N/head fetch, detached-HEAD safety
- Polished error UX — actionable buttons instead of raw git output
- Status visibility — see at a glance which worktrees have uncommitted work
If you find another extension serves you better, that's fine — open a GitHub issue letting me know what was missing, I'm happy to learn.
Known limitations
- Worktrees can't share
node_modules. With pnpm's content-addressed store this is cheap (hardlinks); with npm/yarn each worktree fully installs.
- The PR fetch assumes GitHub's
pull/N/head ref convention. Works for GitHub; GitLab and Bitbucket aren't supported in this version.
- Multi-root workspaces: only the first folder's repo is currently managed.
Contributing
Issues and PRs welcome at github.com/qudratullah/worktrees-plus.
License
MIT — © 2026 Qudrat Ullah