| name | worktree |
| description | 创建 Git worktree 用于隔离开发新功能或修复 bug。
自动处理分支创建、worktree 设置、目录切换和开发环境初始化。
|
| user-invocable | true |
Git Worktree 创建
创建独立的 worktree 用于并行开发,避免污染主工作目录。
使用流程
1. 确认参数
需要以下信息:
- 分支名称: 新功能/修复的分支名(如
feature/add-login, fix/user-auth)
- 基础分支: 从哪个分支创建(默认
main)
- worktree 目录: 统一放在
../AgentsMesh-Worktrees/<branch-name>
2. 创建 Worktree
git fetch origin
mkdir -p ../AgentsMesh-Worktrees
git worktree add -b <branch-name> ../AgentsMesh-Worktrees/<dir-name> origin/<base-branch>
cd ../AgentsMesh-Worktrees/<dir-name>
git status
git log --oneline -3
3. 初始化开发环境 [必须执行]
⚠️ 重要:此步骤为必须执行,不可跳过或询问用户是否执行。
Worktree 创建后必须立即初始化开发环境,确保环境可用。
cd deploy/dev
./dev.sh
脚本会自动:
- 根据 worktree/分支名生成隔离的
.env 配置(端口自动偏移,避免冲突)
- 启动 Docker 后端服务(PostgreSQL、Redis、MinIO、Backend、Nginx、Runner)
- 执行数据库迁移和初始化测试账号 seed 数据
- 启动本地前端(Next.js + Turbopack,性能更好)
4. 完成后输出
创建完成后,告知用户:
已创建 worktree:
- 路径: /Users/xxx/Works/AIO/AgentsMesh-Worktrees/feature-user-auth
- 分支: feature/user-auth (基于 origin/main)
开发环境:
- 前端: http://localhost:3000
- API: http://localhost:<port>/api
- 测试账号: dev@agentsmesh.local / devpass123
- Adminer: http://localhost:<adminer-port>
- MinIO: http://localhost:<minio-port>
常用命令:
- 前端日志: tail -f deploy/dev/web.log
- 后端日志: cd deploy/dev && docker compose logs -f backend
- 停止环境: cd deploy/dev && ./dev.sh --clean
完成开发后:
- 提交代码: git add . && git commit -m "..."
- 推送分支: git push -u origin feature/user-auth
- 清理 worktree: cd <主仓库> && git worktree remove <worktree-path>
完整示例
用户说:"创建一个 worktree 开发用户认证功能"
必须完整执行以下所有步骤(不可中断或询问用户):
git fetch origin
mkdir -p ../AgentsMesh-Worktrees
git worktree add -b feature/user-auth ../AgentsMesh-Worktrees/feature-user-auth origin/main
cd ../AgentsMesh-Worktrees/feature-user-auth
git status
git log --oneline -3
cd deploy/dev
./dev.sh
注意事项
- 分支名遵循约定:
feature/*, fix/*, refactor/*, docs/*
- 所有 worktree 统一放在
../AgentsMesh-Worktrees/ 目录下
- 目录名使用分支名,将
/ 替换为 -(如 feature/user-auth → feature-user-auth)
- 如果分支已存在,使用
git worktree add <path> <existing-branch>
- 每个 worktree 的开发环境端口自动隔离(包括前端端口),可并行运行多个
- 清理前确保所有更改已提交或推送
- 清理环境:
./dev.sh --clean