Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GitHub能很好地处理大型存储库吗?_Git_Github - Fatal编程技术网

GitHub能很好地处理大型存储库吗?

GitHub能很好地处理大型存储库吗?,git,github,Git,Github,我公司的SVN代码库下载速度约为250MBs。经过多年的变化,它可能相当大(4倍大小)。如果我们将所有这些都转移到GitHub,每个用户都必须下载250MBs,还是必须下载1GB或更多才能获得存储库的完整历史记录?您可以在没有历史记录的情况下进行克隆:git clone--深度1您的报告url(请参阅) 如果我们将所有这些都转移到GitHub,每个用户都必须下载250MBs,还是必须下载1GB或更多才能获得存储库的完整历史记录 第一次克隆时,每个用户都必须检索整个存储库。但是,git服务器端实现

我公司的SVN代码库下载速度约为250MBs。经过多年的变化,它可能相当大(4倍大小)。如果我们将所有这些都转移到GitHub,每个用户都必须下载250MBs,还是必须下载1GB或更多才能获得存储库的完整历史记录?

您可以在没有历史记录的情况下进行克隆:git clone--深度1您的报告url(请参阅)

如果我们将所有这些都转移到GitHub,每个用户都必须下载250MBs,还是必须下载1GB或更多才能获得存储库的完整历史记录

第一次克隆时,每个用户都必须检索整个存储库。但是,git服务器端实现将以格式发送存储库的“压缩”版本。因此,传输的数据重量将远小于1Gb

每个后续的获取/拉取操作将仅检索服务器知道且不在客户端本地存储库中的新git对象(提交、树和Blob)。这些文件也将作为打包文件通过电线发送


尽管@akonsu在声明您可以克隆存储库的浅版本(即没有整个历史记录)时是正确的,但这将阻止用户进一步与GitHub托管的上游主存储库进行交互


事实上,文档指出:“浅层存储库有很多限制(您无法克隆或从中获取,也无法从中推送或插入)”

如果存在大量文件的多个版本,那么随着时间的推移,您的对象数据库将变得越来越大

默认情况下,git使用zlib压缩算法来存储单个blob。但是可以告诉git将多个对象合并到一个包文件中,这也使用了增量压缩方法来节省空间。您的整个历史记录仍然存在,与基于以前的状态执行命令(例如,签出旧版本)相比,解包只需要几分钟的时间。但我需要强调这是多么微不足道。老实说,不到一秒钟的增长


有关打包文件的更多信息,请参阅progit书籍:

我的理解是,当您克隆git回购时,您只需获得当前代码。你不了解所有的历史。如果我错了,请纠正我。@akonsu:不,你得到了整个回购协议。你得到了整个存储库是git的优势之一。这可能会有所帮助。事实上,你无法从中解脱出来,这可能是任何协作使用的最大限制。事实上。然而,该文件指出,浅层克隆可能很有趣,“如果您只对具有长期历史的大型项目的最近历史感兴趣,并且希望以补丁的形式发送修复”。这适用于Linux或Git等不基于拉式请求的项目的不同类型的协作工作流。