gwtr - Git Worktree Manager
A simple Git worktree manager that creates worktrees in a consistent location alongside your main repository.
Features
- Consistent Naming: Creates worktrees with the pattern
{repository_name}_{worktree_name} - Automatic Branch Creation: Creates a new branch when adding a worktree
- Simple Commands: Easy-to-remember commands for common worktree operations
- Colored Output: Clear, colored terminal output for better readability
- Git Integration: Works seamlessly with existing Git repositories
- Status Overview: View all worktrees and their states at a glance
- Batch Updates: Pull latest changes from origin/main to all worktrees
- Smart Cleanup: Automatically remove merged worktrees to keep workspace tidy
How It Works
When you run gwtr add feature-x in a repository named myproject, it creates a new worktree at ../myproject_feature-x. This keeps all related worktrees organized at the same directory level as your main repository.
Installation
From Crates.io
From npm
From Source
Usage
# Create a new worktree
# List all worktrees
# Show status of all worktrees
# Pull latest changes from origin/main
# Remove merged worktrees
# Remove a specific worktree
Examples
# In a repository called "myapp"
)
)
Prerequisites
- Git 2.5.0 or later (for worktree support)
- Rust 1.80.0 or later (for building from source)
Development
This project follows Test-Driven Development (TDD) practices.
# Run tests
# Build
# Run with debug output
# Format code
# Run clippy
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to:
- Update tests as appropriate
- Follow the existing code style
- Run
cargo fmtandcargo clippybefore submitting
Release Process
This project uses GitHub Actions for automated releases:
- crates.io: Automatically published when a GitHub release is created
- npm: Automatically published with pre-compiled binaries for all platforms
See docs/CRATES_PUBLISHING.md for details.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Inspired by Git's worktree feature
- Built with Rust and the excellent clap CLI framework