稀疏索引是什么
稀疏索引(sparse index)是对稀疏检出的进一步优化:普通索引为工作区里每个文件建条目,稀疏索引把被排除的目录折叠成条目,git status 等命令不必逐文件确认。它配合 cone 模式使用,Git 2.34 起趋于稳定;索引体积与状态命令速度都能得到改善。
基本信息
| 启用 | git sparse-checkout init --cone --sparse-index |
|---|---|
| 配置 | index.sparse=true(可显式查看与设置) |
| 查看 | git ls-files --sparse 展示折叠目录条目 |
| 关闭 | git sparse-checkout disable 退回完整工作区与普通索引 |
| 版本 | Git 2.34 起趋于稳定 |
| 叠加 | 常与部分克隆、commit-graph 组合使用,建议逐项启用 |
典型使用场景
- 超大仓库只关注部分目录:配合 cone 模式限定检出范围
- status 慢的 monorepo:折叠目录减少索引条目与扫描量
- CI 单模块构建:只检出所需目录,索引更小
- 观察索引体积变化:对比 .git/index 大小评估效果
常用示例
常用示例
git sparse-checkout init --cone --sparse-index # 启用 cone 模式与稀疏索引
git sparse-checkout set services/payment # 只关注支付模块
git ls-files --sparse | head # 查看折叠目录条目
ls -l .git/index # 对比索引体积变化
git status --porcelain | head # 状态命令应明显更快与稀疏检出对照
| 概念 | 范围 | 效果 |
|---|---|---|
| 稀疏检出 | 工作区少了目录 | 内容不检出,索引仍逐文件 |
| 稀疏索引 | 索引也折叠目录 | 状态与遍历更快 |
| cone 模式 | 用目录清单表达规则 | 避免复杂模式写法 |
稀疏索引是性能开关,不改变内容语义;遇到兼容问题(旧工具不识别)可以 disable 退回普通索引,再按需重新启用。
旧版打包脚本或老 IDE 不识别折叠索引布局时可能出现异常,先禁用稀疏索引验证问题是否相关。