我试图维护一些旧的shell脚本,发现这个命令可以 checkout 一个git仓库git clone --filter=blob:none <repo> <folder>
并带有一条评论说'Do partial clone as we don 't need all the git history'。
我以前没有遇到过这个问题,我在谷歌上搜索了一下,似乎--filter=blob:none
本质上应该意味着没有文件被检出,git会根据需要进行检查。
但是我有一个repo,我尝试用--filter=blob:none克隆git clone --filter=blob:none <my repo> <the folder>
完成后,我进入<the folder>
,一切似乎都在那里,我可以打开文件。
如果我将目录更改为<the folder>
,我可以运行git log
并查看提交历史记录。
在我看来,这和只做一个没有过滤器的git clone
没有什么不同?
我确实尝试了一个普通的git克隆,虽然git的日志输出有一些不同,但它产生的最终文件夹是相同的。
所以我的问题是--filter=blob:none到底在做什么,为什么我看不到区别?(我在linux和windows上都做过)
谢谢
1条答案
按热度按时间sf6xfgos1#
在Git中,blob是指文件的内容。当你在Git仓库中对文件进行更改时,Git会创建一个新的blob对象来表示文件的新内容。
在--filter=blob:none选项的上下文中,“blob”指的是仓库中大于特定大小阈值的二进制对象。默认情况下,Git将任何大于100 KB的对象视为blob。
当你在克隆仓库时使用--filter=blob:none时,Git会从克隆中排除这些大型二进制对象(blob)。这可以显著减少克隆仓库的大小,并使下载速度更快。