稀疏检出是什么
稀疏检出让工作区只包含仓库的一部分目录,其余文件仍完整保存在版本库中。默认的锥形模式按目录设置范围,大仓开发常与部分克隆搭配:先只下载需要的目录,其余内容用到时再取。
基本信息
| 初始化 | git sparse-checkout init --cone |
|---|---|
| 设置范围 | git sparse-checkout set <目录…> |
| 查看当前范围 | git sparse-checkout list |
| 关闭 | git sparse-checkout disable,恢复完整工作区 |
| 搭配用法 | git clone --filter=blob:none --sparse,先少下载再按需取用 |
典型使用场景
- 单仓多模块的大仓库里只维护自己负责的服务
- 磁盘空间或首次克隆速度受限
- 流水线只需构建个别模块,减少检出耗时
- 希望减少无关目录带来的检索噪音
- 临时排查线上问题,只关心相关代码
常用示例
常用示例
git clone --filter=blob:none --sparse https://example.com/monorepo.git
cd monorepo
git sparse-checkout set services/payment libs/common # 只保留这两个目录
git sparse-checkout list # 确认当前范围
git sparse-checkout add docs # 临时追加目录
git sparse-checkout disable # 需要完整工作区时关闭相关命令对照
| 命令 | 作用 |
|---|---|
| init --cone | 启用锥形模式,按目录设置范围 |
| set 目录 | 把范围限定为指定目录 |
| add 目录 | 在现有范围上追加目录 |
| disable | 关闭稀疏检出,恢复全部文件 |
稀疏检出改变的是工作区范围,提交与合并仍在完整仓库上进行,历史与分支不受影响,只是本地磁盘上少了一些文件。
需要全局检索时改用 git grep 从版本库层面搜索,避免范围之外的文件被漏检。
范围之外的目录在磁盘上并不存在,编辑器与命令行补全看不到这些路径,误以为是文件被删除时先执行查看当前范围的命令确认。
部分克隆与稀疏检出可以分开使用:只减少历史与文件体积时用部分克隆,只想缩小工作区范围时单独用稀疏检出。