我想使用Git的partialClone
功能。在此答案中,我看到了git clone --filter=tree:none <repo>
命令。
但是,当试图在GitHub上执行提示warning: filtering not recognized by server, ignoring
时。它不起作用。
我想知道GitHub网站是否不支持它,还是我的设置有问题。
我问了Github的反馈人员,但没有得到技术人员的答案。
几乎可以肯定,github或gitlab都不支持。
--filter
选项正在积极开发中,尚未准备好用于通用消耗。Github的博客文章有关2018年9月发布GIT 2.19的博客文章
请注意,大多数公共服务器尚未支持该功能,但是您可以使用
git clone --filter=blob:none
与本地GIT 2.19安装。
一旦此功能变得更加完整,主机开始支持它,我相信他们不会安静地这样做。据我所知,尚无主要云提供商发布这样的公告。
从OP 2019-03-21更新:
不久前,我收到了Github的正式答复。他们认为
--filter
参数仍然是不成熟的功能,并伴随着一些安全问题。因此,此功能将在短期内不支持。
这是Gitlab 13.0(2020年5月)
支持的使用部分克隆排除大文件
通常不建议将大型二进制文件存储在git中,因为此后克隆或获取更改的每个人都会下载每个大文件。
这是缓慢的,即使不是从缓慢或不可靠的Internet连接工作时的完全阻塞。在GitLab 13.0中,已针对Blob尺寸过滤器启用了部分克隆,并且对其他过滤器进行了实验。
这允许将麻烦的大文件排除在克隆和获取之外。当Git遇到缺失的文件时,将按需下载它。
克隆项目时,请使用
--filter=blob:none
或--filer=blob:limit=1m
完全或通过文件大小排除斑点。
请注意,部分克隆至少需要GIT 2.22.0。
(另请参见"什么是git clone --filter
选项的语法?")
在我们最近的博客" git partial clone如何让您仅获取所需的大文件"中,请访问 james> James Ramsay 。
。
请参阅文档和问题。
尽管我找不到有关支持的官方博客文章或新闻,但 GitHub确实确实在推出--filter
支持。
$ git clone --bare --single-branch --depth=1 https://github.com/torvalds/linux
导致下载195.82mib的价值约74k对象。
$ git clone --bare --single-branch --depth=1 --filter=blob:none https://github.com/torvalds/linux
导致下载价值约4.7k对象的2.15mib。如果您想做的就是知道库存中的文件是什么。
由于您在tree:none
中提到,所以我也对此进行了测试。现在它导致fatal: expected 'tree:<depth>'
,我以下实验表明只有tree:0
起作用,这导致在裸露的存储库中下载603bytes。如果您尝试克隆并结帐,则Git将慢慢找出所需的对象并克隆整个仓库。高于0的数字在:fatal: remote error: filter 'tree' not supported (maximum depth: 0, but got: 1)
关于gitlab中的部分克隆/备用结帐支持:
从GitLab 12.4(发布2019-10-22)开始,部分克隆已被添加为自托管实例的可选α功能。您可以通过功能标志API启用IT实例:
curl --data "value=true" --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/features/gitaly_upload_pack_filter
您可以在此处获得有关此信息的更多信息:https://docs.gitlab.com/ee/topics/git/partial_clone.html
要清楚:您不能在此答案上一次编辑时与gitlab.com托管的存储库一起使用此功能。