由于我的工作需要,我只需要从远程git存储库下载./git/objects
中的提交对象。 /.git/
元数据包含一些有用的信息。但是在打包文件中包含commit / tree / blob对象。树/ blob对象太大,因此不应下载树/ blob对象。也许我需要重建git客户端或编写python脚本。
我看到了一些项目(例如https://github.com/lijiejie/GitHack
)。它通过解析index
文件逐步下载文件,最后在下载后将commit / tree / blob对象分开。 >
但是该方法需要通过HTTP访问.git
文件夹,并且您不能直接从github下载索引文件。
我不明白github如何与git客户端通信。
我试图查看C(https://github.com/git/git)和Java(https://github.com/eclipse/jgit)的基础源代码,但是复杂的结构使我感到困惑。
有什么方法可以实现仅下载提交对象的功能?或者,我该如何帮助自己在基础源代码中找到关键代码。
如果您知道该怎么做,请告诉我。非常感谢。
PS:我需要从github / gitlab(公共存储库)下载.git
的某个文件。但是github上的--filter=blob:none
收录了warning: filtering not recognized by server, ignoring
。 github的api有很强的局限性。