首页/开发/Git 与协作速查/部分克隆的过滤级别
进阶与大仓实践69 条

部分克隆的过滤级别

过滤参数可选 blob:none、blob:limit=<大小>、tree:0:粒度越粗省得越多,但读取时补下载的请求也越多,按使用场景取舍。

Git 与协作速查开发更新于 2026-10-13

部分克隆的过滤级别是什么

部分克隆用 --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 足够;本地长期开发若网络不稳,完整克隆反而顺手;过滤参数不是越省越好,要把补下载延迟算进去评估。;把最终选定的参数写进团队克隆说明。

易错点

  • tree:0 下大量目录遍历会频繁补下载,脚本场景慎用,先测一遍真实耗时。,或改用 blob:limit 折中。
  • 过滤级别不能直接对已有克隆降级,需按官方指引重新克隆或调整远端配置。,批量迁移前先在单仓库试点。
  • 按需补下载依赖服务器支持,自建 Git 服务未开启相关能力时 clone 会失败或退化为全量。,文档里记录服务端配置要求。
  • CI 缓存了部分克隆后远端换版本,补下载延迟可能放大构建时间,缓存键与远端配置要一起管理。,出现异常先核对这两处。

数据来源与参考

  • Git 官方文档:git-clone(--filter 取值)
  • Git 官方文档:git-rev-list(--filter 语法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌