有谁知道文件数量和文件大小的Git限制是多少?
有谁知道文件数量和文件大小的Git限制是多少?
Answers:
这从消息Linus本人可以帮助您与其他一些限制
CVS,也就是说,它实际上最终几乎是针对“一次一个文件”模型的。
很好,因为您可以拥有一百万个文件,然后仅检出其中的几个文件-您甚至看不到其他999,995个文件的影响。
从根本上讲,Git从来不会真正关注整个回购。即使您对内容进行了一些限制(例如,仅检查一部分,或者仅回顾了一下历史),git最终仍然总是关心整个内容,并带走了知识。
因此,如果您强迫git将所有内容视为一个巨大的存储库,它的缩放比例将非常糟糕 。我认为该部分不是真正可修复的,尽管我们可能会对此进行改进。
是的,然后是“大文件”问题。我真的不知道该如何处理大文件。我知道我们吸他们。
在我的其他答案中查看更多内容:Git的局限性在于,每个存储库都必须表示一个“连贯的文件集”,即“所有系统”本身(您不能标记“存储库的一部分”)。
如果您的系统是由自治的(但相互依存)的部分组成的,则必须使用子模块。
如Talljoe的答案所示,限制可以是系统限制(大量文件),但是如果您确实了解Git的性质(关于SHA-1密钥表示的数据一致性),那么您将认识到真正的“限制”这是一种用法:即,除非您准备总是获取或标记所有内容,否则不要尝试将所有内容存储在Git存储库中。对于某些大型项目,这没有任何意义。
要更深入地了解git限制,请参阅“ git with large files ”
(提到git-lfs:一种在git repo外部存储大文件的解决方案。GitHub,2015年4月)
限制git repo的三个问题:
最近的主题(2015年2月)说明了Git回购的限制因素:
来自中央服务器的一些同时克隆是否还会减慢其他用户的其他并发操作?
克隆时服务器中没有锁,因此理论上克隆不会影响其他操作。但是,克隆会占用大量内存(除非您启用了可达性位图功能,否则就会占用大量cpu)。
会
git pull慢吗?如果我们排除服务器端,则树的大小是主要因素,但是25k文件应该很好(Linux有48k文件)。
'
git push'?不受回购记录的历史深度或树的宽度影响,因此应尽快。
啊,裁判的数量可能会影响
git-push和git-pull。
我认为Stefan在这方面比我更了解。'
git commit'?(在参考文献3中被列为慢速)git status。(尽管我没有看到它,在参考文献3中又变慢了。)
(也git-add)同样,您的树的大小。按照您的仓库大小,我认为您无需担心。
有些操作似乎不是日常操作,但是如果Web前端经常将它们调用到GitLab / Stash / GitHub等,则它们可能会成为瓶颈。(例如,“
git branch --contains”似乎受到大量分支的不利影响。)
git-blame大量修改文件时,速度可能会很慢。
没有实际限制-一切都以160位名称命名。文件的大小必须可以用64位数字表示,因此也没有实际限制。
但是,有一个实际的限制。我有一个约8GB的存储库,其中包含> 880,000个文件,而git gc需要一段时间。工作树很大,因此检查整个工作目录的操作需要相当长的时间。但是,此存储库仅用于数据存储,因此只是一堆处理它的自动化工具。从仓库中提取更改要比同步相同数据快得多。
%find . -type f | wc -l
791887
%time git add .
git add . 6.48s user 13.53s system 55% cpu 36.121 total
%time git status
# On branch master
nothing to commit (working directory clean)
git status 0.00s user 0.01s system 0% cpu 47.169 total
%du -sh .
29G .
%cd .git
%du -sh .
7.9G .
.git目录?我天真的假设是,其中.git包含工作目录的副本以及历史记录,因此它必须更大。谁能指出我的资源,以了解这些大小之间的关系?
.git目录中的内容已压缩。因此,提交次数相对较少的存储库的压缩历史记录可能比未压缩的工作目录小。我的经验表明,在实践中,使用C ++代码,整个历史记录通常与工作目录的大小相同。
截至2018-04-20 ,Windows的Git有一个错误,该错误使用该特定实现将文件大小有效地限制为最大4GB(此错误也传播到lfs)。
我发现这试图在存储库中存储大量文件(超过350k)。是的,存储。笑
$ time git add .
git add . 333.67s user 244.26s system 14% cpu 1:06:48.63 total
以下来自Bitbucket文档的摘录非常有趣。
使用DVCS存储库进行克隆,推送时,您正在使用整个存储库及其所有历史记录。实际上,一旦您的存储库超过500MB,您可能会开始看到问题。
... 94%的Bitbucket客户的存储库小于500MB。Linux内核和Android都在900MB以下。
该页面上建议的解决方案是将您的项目分成较小的块。
git的回购限制为4G(32位)。