Git Worktree 方案(单仓库多目录并行,仅一份.git历史,不完整克隆)
一、核心原理
仓库本体仅1份.git版本库,通过worktree生成多个独立源码目录,每个目录永久绑定单一分支,目录文件互不覆盖,可同时开多终端、多AI窗口、多服务进程并行开发。
目录结构示例
code-root/
├─ project-main/ # 原始主仓库(唯一.git存放处)
├─ feature-user-import/ # 工作区1,绑定feature/user-import分支
├─ feature-pay-flow/ # 工作区2,绑定feature/pay-flow分支
└─ bugfix-list-lag/ # 工作区3,绑定bugfix/list-lag分支
二、创建并行开发工作区
进入原始主仓库目录执行
# 从main分支新建分支+生成独立工作目录
git worktree add ../feature-user-import -b feature/user-import main
git worktree add ../feature-pay-flow -b feature/pay-flow main
git worktree add ../bugfix-list-lag -b bugfix/list-lag main
三、配套并行开发规范
- 隔离绑定
每个worktree文件夹单独打开IDE/终端,单独开1个AI窗口,窗口仅处理当前分支需求。
AI固定前置约束:
当前仅处理对应分支需求,规则:
1. 只修改需求关联代码,禁止重构、优化无关逻辑
2. 最小改动补丁模式,不扩散代码修改范围
3. 单次只完成一个细分功能点,完成后提示commit
4. 禁止改动稳定老逻辑、公共基础工具
- 分步提交(防AI篡改老代码)
在当前分支工作目录执行,做完一小段立刻提交,不堆积改动
git add .
git commit -m "feat:xx模块-完成细分功能"
- 多进程运行
每个工作目录启动服务配置独立端口,多个服务同时运行无冲突。
四、管理worktree常用命令
# 查看所有创建的并行工作目录
git worktree list
# 需求上线合并完成后,删除闲置工作区释放磁盘
git worktree remove ../feature-user-import
五、合并流程
- 功能全部验证完毕,切换回主仓库目录
cd project-main
git checkout main
git merge --no-ff feature/user-import
git push
- 执行
git worktree remove删除对应工作目录
