Manage git worktrees across multiple related repositories
The Problem: You work on features that span multiple repositories (iOS, Android, backend, shared libs). Git worktrees let you work on multiple branches simultaneously, but managing them across repos is tedious - creating the same worktree in each repo, tracking status, cleaning up.
The Solution: Etz treats multiple repositories as a single logical unit. Create worktrees across all repos with one command, see unified status, and clean up everything at once.
# Create worktree "auth-feature" across iOS, Android, and backend repos etz new auth-feature # See status across all repos etz list # Done? Clean up everything etz delete auth-featureCoordinates worktree operations across multiple independent repositories. Git has git worktree for single repos and git submodule foreach for submodules, but nothing for managing worktrees across independent repos that happen to be related.
- Create/delete worktrees across multiple repos at once
- View git status across all repos in a unified list
- CLI for scripting and automation
- Desktop app for visual interface
- Different branch names per repo if needed
- No submodules or git meta-repo required
CLI: Not yet published to npm. For now, see Development Setup to build from source.
Desktop App: Download from releases (macOS, Windows, Linux).
# CLI (once published to npm) npm install -g @etz/cli # Or for development - see Development Setup belowCreate ~/.etzconfig.yaml pointing to your repos:
base_branch: main worktrees_dir: ~/Developer/worktrees repos: - name: ios base_path: ~/repos/myapp-ios - name: android base_path: ~/repos/myapp-android - name: backend base_path: ~/repos/myapp-api# Create worktree across all repos etz new my-feature # List worktrees and their status etz list # Delete when done etz delete my-featureRun etz --help for all commands.
Etz wraps git worktree commands and coordinates them across multiple repos:
- Reads repo definitions from
.etzconfig.yaml - Runs worktree operations in parallel with progress indicators
- Tracks which worktrees belong together across repos (via shared "label")
- Provides helpers:
etz openfor launching editors,etz doctorfor validation, interactive prompts, etc.
It doesn't reimplement git worktree logic - it coordinates the operations across repos and manages the bookkeeping.
etz new <branch> # Create worktree across all repos etz new <branch> -r ios # Create only in specific repo etz new -i # Interactive mode (prompts for options) etz list # Show all worktrees with status etz delete <branch> # Remove worktree from all repos etz open <branch> <repo> # Open in editor (VS Code, Cursor, etc.) etz doctor # Check configuration healthSee CLI Documentation for complete command reference.
- CLI Reference - All commands and options
- Desktop App Guide
- Core Library API - For building on top of Etz
- @etz/core - Core library (TypeScript)
- @etz/cli - Command-line tool
- @etz/desktop - Electron app
# Clone the repository git clone https://github.com/etz-dev/etz.git cd etz # Install dependencies npm install # Build all packages npm run build # Run the CLI in development npm run cli -- list # Run the desktop app in development npm run dev:desktop# Build everything npm run build # Build specific package npm run build:core npm run build:cli npm run build:desktop # Development mode (watch) npm run dev:core npm run dev:cli npm run dev:desktop # Run tests npm testCurrent focus (v1.0):
- Core worktree operations (create, list, delete)
- Multi-repo configuration
- CLI and desktop app
Potential future additions:
- Plugin system for custom commands
- Team configuration sharing
- CI/CD integration helpers
Open to feedback on what would be most valuable - see Discussions.
Contributions welcome! See CONTRIBUTING.md for guidelines.
- Bug reports: Open an issue
- Feature requests: Start a discussion
- Questions: Discussions
MIT - see LICENSE for details.