A CLI tool that creates, deletes, and manages git worktrees and branches in a single command. Focused on simplifying git operations, keeping features minimal.
twig is designed to be friendly for both humans and agentic coding tools, and to integrate easily with other CLI tools:
--quietminimizes output to paths only, making it easy to pass to other tools- For human use,
--verboseand interactive confirmations ensure safety
Examples:
cd $(twig add feat/x -q) # cd into the created worktree
twig list -q | fzf # select a worktree with fzf
twig list -q | xargs -I {} code {} # open all worktrees in VSCode
twig clean -v # confirm before deletion, show all skipped itemstwig treats branches and worktrees as a single unified concept. Users don't need to think about whether they're managing a "branch" or a "worktree" - they simply work with named development contexts.
twig add feat/xcreates both the branch and worktree togethertwig remove feat/xdeletes both together- Even if a worktree directory is deleted externally,
twig removestill works
This 1:1 mapping simplifies the mental model: one name, one workspace, one command.
twig add feat/xxx executes worktree creation, branch creation, and symlink setup all at once.
Use --source to create from any branch regardless of current worktree.
Set default_source in config to always branch from a fixed base (e.g., main).
Create new worktrees with personal settings like .envrc and Claude configs carried over. Git worktree operations don't copy gitignored files, so twig uses symlinks to share these files across worktrees. Start working immediately in new worktrees without manual setup.
Use --carry to move changes to a new worktree, or --sync to copy them to both.
Use --file with --carry to move only specific files matching a glob pattern.
Examples:
- Move refactoring ideas to a separate worktree and continue main work
- Extract WIP changes to a new branch before switching tasks
twig clean removes worktrees that are merged, have upstream gone, or are prunable.
Requires Git 2.15+.
brew install 708u/tap/twiggo install github.com/708u/twig/cmd/twig@latest# Initialize settings
twig init
# Create a new worktree and branch
twig add feat/new-feature
# Copy uncommitted changes to a new worktree
twig add feat/wip --sync
# Move uncommitted changes to a new worktree
twig add feat/wip --carry
# List worktrees
twig list
# Clean up worktrees no longer needed
twig clean
# Delete a specific worktree
twig remove feat/doneConfigure in .twig/settings.toml:
worktree_destination_base_dir: Destination directory for worktreesdefault_source: Source branch for symlinks (creates symlinks from main even when adding from a derived worktree)symlinks: Glob patterns for symlink targetsinit_submodules: Initialize submodules when creating worktrees
Personal settings can be overridden in .twig/settings.local.toml (.gitignore recommended).
extra_symlinks: Add personal patterns while preserving team settings
Details: docs/reference/configuration.md
Shell completion is available for all commands and flags.
For example, twig remove <TAB> completes existing branch names.
Add the following to your shell configuration:
Add to ~/.bashrc:
eval "$(twig completion bash)"Add to ~/.zshrc:
eval "$(twig completion zsh)"Add to ~/.config/fish/config.fish:
twig completion fish | source| Command | Description |
|---|---|
| init | Initialize settings |
| add | Create worktree and branch |
| list | List worktrees |
| remove | Delete worktree and branch (multiple supported) |
| clean | Bulk delete merged worktrees |
| sync | Sync symlinks and submodules to worktrees |
See the documentation above for detailed flags and specifications.
A Claude Code plugin is available for AI-assisted worktree management. The plugin provides an agent and skill that help Claude understand twig commands and execute worktree operations.
Run the following slash commands in a Claude Code session:
# Add the marketplace
/plugin marketplace add 708u/twig
# Install the plugin
/plugin install twig@twig-plugins| Plugin | Description |
|---|---|
twig |
Agent and skill for AI-assisted operations |
twig-worktree-hooks |
Delegate worktree lifecycle to twig CLI |
Provides guidance and command execution support:
| Component | Description |
|---|---|
| twig-operator agent | Executes twig commands based on user intent |
| twig-guide skill | Provides command syntax and usage details |
Hooks into Claude Code's worktree lifecycle (WorktreeCreate /
WorktreeRemove) so that twig add and twig remove are used
instead of the built-in git worktree commands. This enables
symlink creation, submodule initialization, and other twig
features in Claude Code agent worktrees.
Requires twig installed in PATH. Install separately:
/plugin install twig-worktree-hooks@twig-pluginsOnce the twig plugin is installed, Claude can help with
worktree operations:
- "Create a new worktree for feat/user-auth"
- "Move my current changes to a new branch"
- "Clean up merged worktrees"
- "I want to work on the API and frontend in parallel"