一键导入
git-worktrees
// Use git worktrees for parallel development on multiple branches simultaneously
// Use git worktrees for parallel development on multiple branches simultaneously
| name | git-worktrees |
| description | Use git worktrees for parallel development on multiple branches simultaneously |
| tags | ["git","worktrees","parallel-development","productivity"] |
| related_agents | ["version-control","engineer"] |
Git worktrees allow you to have multiple working directories from the same repository, each with a different branch checked out. Work on multiple branches simultaneously without switching.
New Branch:
# Create worktree with new branch
git worktree add ../worktrees/feature-auth -b feature/authentication
# Navigate to worktree
cd ../worktrees/feature-auth
Existing Branch:
# Create worktree from existing remote branch
git worktree add ../worktrees/feature-profile feature/user-profile
# Or from origin
git worktree add ../worktrees/review origin/feature/pr-to-review
git worktree list
# Output:
# /Users/dev/project abc123 [main]
# /Users/dev/worktrees/f-auth def456 [feature/authentication]
# /Users/dev/worktrees/f-profile ghi789 [feature/user-profile]
# Remove worktree (deletes directory)
git worktree remove ../worktrees/feature-auth
# Or manually delete directory and prune
rm -rf ../worktrees/feature-auth
git worktree prune
Recommended layout:
/Users/dev/
├── my-project/ # Main repository
│ ├── .git/ # Git database
│ ├── src/
│ └── ...
└── my-project-worktrees/ # All worktrees here
├── feature-auth/ # feature/authentication branch
├── feature-profile/ # feature/user-profile branch
├── hotfix-urgent/ # hotfix/urgent-fix branch
└── review-pr-123/ # Reviewing PR #123
Perfect for stacked PR workflow - one worktree per PR:
# Create worktree for each PR in stack
git worktree add ../stack/pr-001 -b feature/001-base-auth
git worktree add ../stack/pr-002 -b feature/002-user-profile
git worktree add ../stack/pr-003 -b feature/003-admin-panel
# Work in each independently
cd ../stack/pr-001
# Implement base auth
git commit -am "feat: base authentication"
git push -u origin feature/001-base-auth
cd ../stack/pr-002
# Already on feature/002-user-profile branch
# Implement user profile (depends on pr-001)
git commit -am "feat: user profile with auth"
git push -u origin feature/002-user-profile
cd ../stack/pr-003
# Implement admin panel (depends on pr-002)
git commit -am "feat: admin panel"
git push -u origin feature/003-admin-panel
Run multiple dev servers simultaneously:
# Terminal 1: Main feature development
cd /project-worktrees/feature-new-ui
npm install
npm run dev # Server on port 3000
# Terminal 2: Urgent hotfix (different branch)
cd /project-worktrees/hotfix-critical
npm install
npm run dev -- --port 3001 # Server on port 3001
# Both running simultaneously without branch switching
Review PRs in isolation:
# Create worktree for PR review
git worktree add ../review/pr-456 origin/feature/user-auth
cd ../review/pr-456
npm install
npm test
npm run dev
# Review code, test functionality
# When done, remove worktree
cd /main-project
git worktree remove ../review/pr-456
When base PR changes, update chain across worktrees:
# PR-001 got feedback
cd /stack/pr-001
git pull origin feature/001-base-auth
# Make changes, push
# Update PR-002 (in separate worktree)
cd /stack/pr-002
git rebase feature/001-base-auth
git push --force-with-lease origin feature/002-user-profile
# Update PR-003 (in separate worktree)
cd /stack/pr-003
git rebase feature/002-user-profile
git push --force-with-lease origin feature/003-admin-panel
Option 1: Symlink
cd /worktrees/feature-auth
ln -s /main-project/node_modules node_modules
Option 2: Separate Install
cd /worktrees/feature-auth
npm install # Independent node_modules
Trade-off:
# Use descriptive, consistent names
git worktree add ../worktrees/feature-authentication feature/authentication
git worktree add ../worktrees/hotfix-security hotfix/security-patch
# Keep worktrees outside main repo
/Users/dev/project/ # Main repo (never delete)
/Users/dev/project-worktrees/ # All worktrees here (safe to delete)
# When PR merged, remove worktree immediately
git worktree remove path/to/worktree
# Periodically check for stale worktrees
git worktree prune
# Delete merged branches
git branch -d feature/old-branch
git push origin --delete feature/old-branch
❌ WRONG: Switching branches in worktree defeats the purpose
✅ CORRECT: Each worktree permanently on one branch
# Create worktree with new branch
git worktree add <path> -b <branch>
# Create worktree from existing branch
git worktree add <path> <branch>
# List all worktrees
git worktree list
# Remove worktree
git worktree remove <path>
# Clean up stale references
git worktree prune
# Move worktree to different location
git worktree move <old-path> <new-path>
Cause: Branch is checked out in another worktree
Solution:
# List worktrees to find where branch is checked out
git worktree list
# Either work in existing worktree or remove it first
git worktree remove <path-to-old-worktree>
Solution:
git worktree prune regularlySolution:
When delegating worktree setup to version-control agent:
Task: Create worktrees for stacked PR development
Requirements:
- Create 3 worktrees in /project-worktrees/
- Worktree 1: pr-001 with branch feature/001-base-auth
- Worktree 2: pr-002 with branch feature/002-user-profile
- Worktree 3: pr-003 with branch feature/003-admin-panel
Commands:
git worktree add ../project-worktrees/pr-001 -b feature/001-base-auth
git worktree add ../project-worktrees/pr-002 -b feature/002-user-profile
git worktree add ../project-worktrees/pr-003 -b feature/003-admin-panel
Verification: git worktree list should show all 3 worktrees
✅ No Branch Switching: Work on multiple branches without git checkout
✅ Parallel Servers: Run multiple dev environments simultaneously
✅ Preserve State: Build artifacts and node_modules stay per-branch
✅ Safer Reviews: Test PRs without affecting main working directory
✅ Faster Context Switch: Jump between worktrees instead of rebasing
stacked-prs - Combine worktrees with stacked PR workflowgit-workflow - General git branching patternscode-review - Review code in isolated worktreesPython asyncio - Modern concurrent programming with async/await, event loops, tasks, coroutines, primitives, aiohttp, and FastAPI async patterns
mypy - Static type checker for Python with gradual typing, strict mode, Protocol support, and framework integration
Python data validation using type hints and runtime type checking with Pydantic v2's Rust-powered core for high-performance validation in FastAPI, Django, and configuration management.
Essential Git patterns for effective version control, eliminating redundant Git guidance per agent.
Create and manage stacked (dependent) pull requests for complex features
Safe patterns for evolving database schemas in production with decision trees and troubleshooting guidance.