我正在做一个关于从GitHub存储大量存储库的项目。许多存储库共享许多对象。所以我想了解GitHub是否只存储一次对象以节省存储空间,以及如何执行此操作(如果这不是秘密)。
我没有找到任何令人满意的答案,只是GitHub做了一些预测。
答案 0 :(得分:2)
GitHub 不完成此操作。 GitHub单独存储每个“存储库网络”,其中存储库网络是:
每个“存储库网络”都可以使用Git的“替代”机制在它们之间共享对象。这允许Git考虑其他对象数据库位置,而不仅仅是存储库中的正常存储。
在GitHub上创建存储库时,您将在磁盘上创建一个裸存储库,并使用正常的磁盘上对象数据库对其进行备份。当您从该存储库创建一个fork时,GitHub将:
发生这种情况时,存储库网络将在它们之间共享对象。这意味着对象在原始存储库和已分叉的存储库之间共享。
但这是共享对象存储的限制。每个人都无法共享大型对象数据库(也不应该出于可扩展性和安全性原因)。
(注意:虽然我在GitHub上的Git基础设施团队工作,但这些信息并不保密。)
<强>来源强>
Git Merge会议上的这两场会谈讨论了GitHub的git存储库存储: