Git仅获取文件名(不含内容):HTTP POST请求Filter配置疑问
Git HTTP POST请求中Filter选项的正确用法
核心格式规则
- Filter的位置:两种写法都有效,既可以和
want参数放在同一行,也可以单独起一行作为独立命令。 - 语法格式:必须用
filter <过滤规则>的格式,不能用filter=<过滤规则>——这是你之前尝试失败的核心原因。
正确请求案例(针对GitHub)
场景1:仅获取文件名(完全跳过blob内容)
这是最匹配你需求的写法,用blob:none规则直接丢弃所有文件内容,只保留目录和文件名结构:
0072want 0210b0aa4666d7727cd8da894e15ffbc53dc18d0 side-band-64k no-progress multi_ack filter blob:none 000Ddeepen 1 00000009done
或者单独一行声明filter命令:
0056want 0210b0aa4666d7727cd8da894e15ffbc53dc18d0 side-band-64k no-progress multi_ack 000Ddeepen 1 0014filter blob:none 00000009done
场景2:限制blob大小(仅获取小于指定阈值的内容)
如果需要保留小文件内容,可使用blob:limit=<大小>格式(支持k/m/g单位,比如100k):
0079want 0210b0aa4666d7727cd8da894e15ffbc53dc18d0 side-band-64k no-progress multi_ack filter blob:limit=100k 000Ddeepen 1 00000009done
你之前的错误分析
- 错误使用
filter=前缀:Git的HTTP协议中,filter是独立命令,并非want的键值对参数,因此不能写成filter=blob:limit=5这种格式。 - 规则格式缺失:第一个请求里的
filter=:limit=512缺少blob前缀,正确写法应为filter blob:limit=512。
验证说明
使用上述正确格式后,GitHub会返回仅包含目录、文件名结构的响应,不会传输文件的实际内容,完全能达到你节省带宽的需求。
内容的提问来源于stack exchange,提问作者Taryck B.
相关产品推荐
相关产品推荐

