github/gitlab 可以创建多少个分支?

abi*_*23_ 3 git github gitlab

在 GitHub/GitLab 中创建分支有什么限制吗?

我目前正在做一个项目,所以我对创建分支感到好奇。可以创建多少个分支?

tor*_*rek 11

对分支、标签、远程跟踪名称和其他引用的数量没有硬性限制。(Git 的所有名称到哈希 ID 映射条目都是引用引用:分支名称只是全名以 开头的引用refs/heads/)。

\n\n

这些并不总是存储在单独的文件中。特别是,随着时间的推移,裁判将变得“拥挤”。打包的引用存在于一个平面文件中,这使得它们占用(少得多)的磁盘空间,尽管现在读取任何一个特定引用的值\xe2\x80\x94其哈希ID\xe2\x80\x94可能涉及读取相当大的文件,如果你有很多参考文献。(写入值会导致引用被解包,将先前的值留在打包引用文件\xe2\x80\x94中,因此如您所见,查找引用值的过程从查找解包副本开始首先,因为它必须覆盖任何打包副本。)

\n\n

由于每个名称和值对占用的磁盘空间很小(一个块或更少),因此绝对有可能创建数百万个引用。但是,如果您这样做,您的 Git 操作将会明显减慢。原因是 Git 充满了对所有引用的线性扫描。例如,为了“装饰”git log输出,1在打印提交之前git log,它会检查每个引用以查看该引用是否引用该提交。rootkonda 的答案链接的问题,在qqx 的答案中,有另一个链接到nabble.com 存档的邮件列表线程,涉及发生的性能问题(有些已经修复,有些仍然存在)。

\n\n

GitHub 和 Google 几年前也发现,Git 也会在两个 Git 在启动时经历的问候过程中花费大量时间和网络带宽:例如,当你让你的 Git 调用服务器的 Gitgit fetch时,您的 Git 让服务器 Git 列出了它的所有分支和标签以及其他此类名称。如果有一万个列出的名称,当使用哈希 ID 扩展时,每个名称平均长度约为 60 个字符,2意味着在发生任何有用的提交交换之前需要传输约 600 KB 的数据。

\n\n

一般来说,创建数千或数百万的引用并不是一个好的计划。理论上没有理由不这样做,但出于协议和性能原因,低于一千个引用的软上限可能是明智的。

\n\n
\n\n

1在:

\n\n
commit c7a62075917b3340f908093f63f1161c44ed1475 (HEAD -> master, origin/master, origin/HEAD)\n
Run Code Online (Sandbox Code Playgroud)\n\n

HEADmasterorigin masterorigin/HEAD是通过搜索所有引用找到的装饰;格式HEAD ->表明已HEAD附加,在本例中为master)。

\n\n

2请注意,带注释的标签在这里会加倍,因为它们列出了标签名称和哈希 ID,以及以^{}标签目标为后缀的标签名称。 refs/tags/v1.2.3 09e393d913072d7765b02aba1210d843a83cfbae即使没有换行符或其他分隔符也是 57 个字符。

\n