A wrapper for Git Worktree operations that provides an interactive API so developers can manage worktrees more easily — without switching between the terminal and VS Code.
After creating a ZSH plugin for Git operations, I noticed how often I switched between the terminal and my main editor (VS Code). To streamline my workflow, I built this extension to keep everything inside VS Code.
This extension supports multiple workspaces. Here's how it works:
✅ Select a workspace from the list → the operation will run in that workspace.
git worktree add [remote-branch] [new-branch]Create a new worktree.
Behavior:
ESC), it defaults to using the same name as the remote branch.git worktree listDisplay all worktrees and switch between them easily via an interactive UI.
git worktree remove [worktree-name]Remove an existing worktree.
Behavior:
Force delete button in that popup.Restrictions:
Ctrl + Shift + PGit Worktree:Create a new Git worktree with an intuitive interface.

View and switch between all active worktrees with ease.

Safely remove a worktree. If files are untracked or modified, you’ll get a prompt to confirm.

If something goes wrong, a helpful popup will appear at the bottom-right corner of your screen. Please don’t hesitate to open an issue if you encounter a bug.

Customize behavior using the following properties in your VS Code settings:
| 🏷️ Property | 🧩 Type | 🛠️ Default | 📃 Description |
|---|---|---|---|
vsCodeGitWorktrees.remove.stalledBranches |
boolean |
false |
Remove local (stalled) branches that no longer exist on the remote |
vsCodeGitWorktrees.move.openNewVscodeWindow |
boolean |
true |
Open a new VS Code window when switching or creating a worktree |
vsCodeGitWorktrees.worktrees.dir.path |
string |
null |
Define a directory for storing all your worktrees, e.g. ${userHome}/worktrees or /home/user/worktrees |
vsCodeGitWorktrees.add.autoPush |
boolean |
true |
Automatically push the new worktree branch after creation |
vsCodeGitWorktrees.add.autoPull |
boolean |
true |
Automatically pull updates after creating a new worktree branch |
vsCodeGitWorktrees.worktreeCopyIncludePatterns |
array |
[] |
Files and folders to copy from the source repo to the new worktree, e.g. [".venv", "docs/tmp"] |
vsCodeGitWorktrees.worktreeCopyExcludePatterns |
array |
[] |
Files and folders to exclude from the worktree copy, e.g. ["tmp", "target"] |
vsCodeGitWorktrees.worktree.coloring |
boolean |
false |
Enable color labels when creating or switching worktrees |
vsCodeGitWorktrees.worktreeSearchPath |
string |
null |
Optional subdirectory (relative or absolute) where Git repositories can be found if the root workspace is not a Git repository, e.g. ${userHome}/worktrees |
We welcome all contributions, issues and feature requests, whether small or large. If you want to contribute, feel free to check out our issues page and our guidelines.
$ claude mcp add vscode-git-worktrees \
-- python -m otcore.mcp_server <graph>