worktree
A CLI tool that opens GitHub issues as git worktree workspaces. Paste a GitHub issue URL (or use a worktree:// deep link) and worktree clones the repo as a bare clone, creates a dedicated worktree branch, and opens it in your editor.
Install
Then run first-time setup:
This detects your editor, writes the default config, and registers the worktree:// URL scheme handler — all in one step.
Usage
Open a workspace
# GitHub issue URL
# Shorthand
# worktree:// deep link (used by browser extensions / integrations)
Flags:
| Flag | Description |
|---|---|
--editor |
Force open in editor |
--print-path |
Print the workspace path and exit |
Configuration
Config keys:
| Key | Type | Default | Description |
|---|---|---|---|
editor.command |
string | — | Command to open the editor, e.g. code . or nvim . |
open.editor |
bool | true |
Open editor automatically |
The config file lives at:
- macOS/Linux:
~/.config/worktree/config.toml - Windows:
%APPDATA%\worktree\config.toml
Example config.toml:
[]
= "code ."
[]
= true
worktree:// URL scheme
Register worktree as the system handler for worktree:// links so they open automatically from the browser:
Platform details:
- macOS — installs a minimal
.appbundle in~/Applications/WorktreeRunner.appand registers it with Launch Services. - Linux — installs a
.desktopfile in~/.local/share/applications/and registers it withxdg-mime. - Windows — writes the handler to
HKCU\Software\Classes\worktreein the registry.
How it works
- Parses the issue reference into
owner,repo, andnumber. - Bare-clones the repository to
$TMPDIR/worktree-io/github/<owner>/<repo>(re-uses the clone on subsequent runs and fetches latest). - Creates a git worktree at
$TMPDIR/worktree-io/github/<owner>/<repo>/issue-<N>on a branch namedissue-<N>.- If the branch already exists on the remote it is checked out and tracked locally.
- Otherwise a new branch is created from the repo's default branch (
main,master, etc.).
- Opens the workspace directory in the configured editor.
License
MIT