A interactive CLI tool for creating and managing Git worktrees with an easy to use interface.
- Quick Commands: Jump directly to specific actions via command line
- Smart Configuration: Project-specific and global configuration support
- File Management: Automatically copy configuration files to new worktrees
- Post-Create Actions: Run custom commands after worktree creation
npm install -g branchletRun Branchlet in any Git repository:
branchletThis opens an interactive menu where you can:
- Create new worktrees
- List existing worktrees
- Delete worktrees
- Configure settings
branchletOpens the main menu with all available options.
branchlet create # Go directly to worktree creation
branchlet list # List all worktrees
branchlet delete # Go directly to worktree deletion
branchlet settings # Open settings menubranchlet --help # Show help information
branchlet --version # Show version number
branchlet -m create # Set initial modeBranchlet looks for configuration files in this order:
.branchlet.jsonin your repo's root (project-specific)~/.branchlet/settings.json(global configuration)
Create a .branchlet.json file in your project root or configure global settings:
{
"worktreeCopyPatterns": [".env*", ".vscode/**"],
"worktreeCopyIgnores": ["**/node_modules/**", "**/dist/**", "**/.git/**"],
"worktreePathTemplate": "$BASE_PATH.worktree",
"postCreateCmd": ["npm install", "npm run db:generate"],
"terminalCommand": "code .",
"deleteBranchWithWorktree": true
}-
worktreeCopyPatterns: Files/directories to copy to new worktrees (supports glob patterns)- Default:
[".env*", ".vscode/**"] - Examples:
["*.json", "config/**", ".env.local"]
- Default:
-
worktreeCopyIgnores: Files/directories to exclude when copying (supports glob patterns)- Default:
["**/node_modules/**", "**/dist/**", "**/.git/**", "**/Thumbs.db", "**/.DS_Store"]
- Default:
-
worktreePathTemplate: Template for worktree directory names- Default:
"$BASE_PATH.worktree" - Variables:
$BASE_PATH,$WORKTREE_PATH,$BRANCH_NAME,$SOURCE_BRANCH - Examples:
"worktrees/$BRANCH_NAME","$BASE_PATH-branches/$BRANCH_NAME"
- Default:
-
postCreateCmd: Commands to run after creating a worktree. Runs in the new worktree directory.- Default:
[] - Examples:
["npm install"],["pnpm install", "pnpm build"] - Variables supported in commands:
$BASE_PATH,$WORKTREE_PATH,$BRANCH_NAME,$SOURCE_BRANCH
- Default:
-
terminalCommand: Command to open terminal/editor in the new worktree. Runs in the new worktree directory.- Default:
"" - Examples:
"code .","cursor .","zed ."
- Default:
-
deleteBranchWithWorktree: Whether to also delete the associated git branch when deleting a worktree- Default:
false - When enabled, deleting a worktree will also delete its branch (with safety checks)
- Shows warnings for branches with unpushed commits or uncommitted changes
- Default:
Available in worktreePathTemplate, postCreateCmd, and terminalCommand:
$BASE_PATH: Base name of your repository$WORKTREE_PATH: Full path to the new worktree$BRANCH_NAME: Name of the new branch$SOURCE_BRANCH: Name of the source branch
-
Navigate to your Git repository
cd my-project -
Start Branchlet
branchlet
-
Create a worktree
- Select "Create new worktree"
- Enter directory name (e.g.,
feature-auth) - Choose source branch (e.g.,
main) - Enter new branch name (e.g.,
feature/authentication) - Confirm creation
Create .branchlet.json in your project:
{
"worktreeCopyPatterns": [
".env.local",
".vscode/**",
"package.json",
"tsconfig.json"
],
"worktreePathTemplate": "worktrees/$BRANCH_NAME",
"postCreateCmd": [
"npm install",
"npm run db:populate"
],
"terminalCommand": "code .",
"deleteBranchWithWorktree": true
}- Node.js 18.0.0 or higher
- Git installed and available in PATH
- Operating system: macOS, Linux, or Windows
MIT