示例
1. 创建一个裸仓库
git clone --bare https://github.com/your-org/your-monorepo.git your-monorepo
cd your-monorepo
2. 为每个分支创建工作树
# 主开发工作树
git worktree add ./main main
# 代理 A 的功能分支
git worktree add ./feature-auth feat/auth
# 代理 B 的 bug 修复分支
git worktree add ./fix-api fix/api-error
每个工作树都是一个完整的检出,拥有自己的文件,但它们都共享同一个 .git 对象存储。
3. 启用全局虚拟存储
在你的仓库中的 pnpm-workspace.yaml 文件中添加 enableGlobalVirtualStore: true:
packages:
- 'packages/*'
enableGlobalVirtualStore: true
4. 在每个工作树中安装依赖项
cd main && pnpm install
cd ../feature-auth && pnpm install
cd ../fix-api && pnpm install
第一次执行 pnpm install 会将软件包下载到全局存储中。 在其他工作树中进行后续安装几乎是瞬间完成的,因为它们只会创建指向同一存储的符号链接。