部分克隆的过滤级别是什么
部分克隆用 --filter 控制拉取粒度:blob:none 不取文件内容(最常用)、blob:limit=<大小> 只取小文件、tree:0 连树对象也按需取。粒度越粗省下载越多,但读取时补下载的请求也越多,按场景取舍。
基本信息
| blob:none | 不取任何文件内容,检出时按需补 |
|---|---|
| blob:limit=<n> | 只取小于阈值的文件,其余按需 |
| tree:0 | 连树对象也按需获取,体积最小、请求最多 |
| 组合 | 可与 --depth 等浅克隆参数叠加 |
| 校验 | 补下载由远端按需响应,需要服务器支持 |
| 对照 | 浅克隆限历史深度;部分克隆限内容粒度,两者可叠加 |
典型使用场景
- CI 单次构建:blob:none 足够,省下载量。
- 大仓库本地克隆:blob:limit 限小文件,常用文件本地就有。
- 极限场景:tree:0 用于只统计提交或跑轻量脚本的场景。
- 目录巡视:先部分克隆浏览结构,再按需读取。
- 网络受限:按需拉取比一次性全量更可行。
- 迁移评估:对比不同 filter 的耗时选取参数。
- 教学解释:向团队说明文件为何「不在本地」却可检出。
- 成本评估:首次克隆与后续补下载的总耗时对比后再定。
常用示例
常用示例
git clone --filter=blob:limit=1m https://example.com/repo.git # 只取小文件
git clone --filter=tree:0 https://example.com/bigrepo.git # 极致省量
git rev-list --count --filter=blob:none HEAD # 按过滤条件统计
# 按需补下载依赖服务器端支持 filter 能力,自建服务需先确认级别对比
| filter | 下载内容 | 适用 |
|---|---|---|
| blob:none | 不取文件内容 | CI 构建 |
| blob:limit=1m | 小于阈值的文件本地保留 | 日常开发最常用 |
| tree:0 | 连目录结构按需获取 | 轻量脚本与统计 |
CI 做单次构建通常 blob:none 足够;本地长期开发若网络不稳,完整克隆反而顺手;过滤参数不是越省越好,要把补下载延迟算进去评估。;把最终选定的参数写进团队克隆说明。