Workflows
monorepo 场景下的稀疏检出与多工作树协作
在 monorepo 场景里,用 sparse-checkout 和 worktree 限定工作范围,降低上下文负担并支持并行任务。
- 要把命令组合成稳定流程的团队成员
- 需要处理协作顺序和分支边界的人
- 知道 fetch / pull / push / branch 的基本作用
- 能理解一条分支为什么会分叉
- 照抄流程却没确认当前分支关系
- 在共享分支上用错整合方式
monorepo 最常见的问题不是 Git 失效,而是工作范围太大。
这时可以把两个能力结合起来:
sparse-checkout:只拉起当前需要的目录worktree:为并行任务开多个独立工作副本
一个常见场景
packages/frontend/packages/backend/packages/shared/docs/infra/
wt-frontend/ → 只检出 frontend + sharedwt-backend/ → 只检出 backend + shared每个 worktree 只包含相关目录
cone 模式下 sparse-checkout 性能更好。配合 worktree 实现真正的并行 monorepo 开发。
你只改前端应用,但仓库里还有后端、脚本、基础设施和大量共享包。
如果每次都把整棵树都拉起来,成本会很高。
一条可执行流程
git sparse-checkout init --cone
git sparse-checkout set apps/web packages/ui
git worktree add ../repo-hotfix hotfix/login-fix
这样你可以:
- 在当前工作树处理主任务
- 在另一个 worktree 里处理热修
- 同时让当前工作区范围保持更小
和 submodule 的边界
如果仓库本身就是 monorepo,优先考虑 sparse-checkout / worktree。
如果你管理的是独立仓库依赖关系,才更可能落到 submodule。
一个原则
在大型仓库里,Git 工作流优化的关键不只是命令更高级,而是把“我现在真正要改的范围”压缩到足够清楚。