
仓库变大以后,切分支和编辑器索引都会变慢。sparse-checkout 保留完整版本库,只检出当前任务需要的路径。
它改变的是工作区
Sparse-checkout 只决定工作目录中的路径,提交图和分支仍在。浅克隆减少历史深度,partial clone 延迟下载对象。
| 需求 | 手段 | 代价 |
|---|---|---|
| 只开发几个目录 | sparse-checkout | 其他路径在工作区不可见 |
| 只保留最近提交 | shallow clone | 老历史查询受限 |
| 多分支并行 | worktree | 工作区独立 |
先用 cone 模式
cone 模式按目录表达规则,最适合团队日常使用:
1 | git sparse-checkout init --cone |
set 重写清单,add 追加目录。根目录配置通常会保留;启用后应跑一次构建或测试。

用 sparse-index 降低索引开销
工作区变小后,索引仍可能记录完整路径。可以启用稀疏索引:
1 | git config index.sparse true |
切换规则模式时,在 set 中明确写 --cone 或 --no-cone。旧脚本若直接解析 .git/index,异常时先关闭 sparse-index。
切分支与恢复
新分支需要额外目录时显式追加:
1 | git switch release/2.x |
依赖缺失时可暂时恢复完整工作区,结束后再设回清单:
1 | git sparse-checkout disable |
disable 不会删除提交,只会重新填充被隐藏的受跟踪文件。非 cone 模式能按文件匹配,但规则更难读,只有目录筛选不够用时再采用。

CI 与团队边界
单服务 CI 可以组合 partial clone;发布和全局搜索通常依赖完整树,应执行 git sparse-checkout disable。脚本打印 git sparse-checkout list;稀疏工作区不是安全边界。
落地检查清单
启用前确认构建脚本和 IDE 能接受“本地缺文件”:
- 记录
git sparse-checkout list的范围。 - 切分支后执行
git sparse-checkout reapply。 - 任务结束时保留规则意图,或用
disable恢复完整树。
Sparse-checkout 把索引成本限制在当前任务;先用 cone 模式,再按实测扩展。