我最近在工作中检查了我的一个git存储库之一,该存储库具有10,000多个分支和30000多个标签。新鲜克隆后,回购的总大小为12Gigs。我确信没有理由要有10000个分支机构。因此,我相信它们会在磁盘中占据相当大的空间。所以,我的问题如下
最佳答案
所有git引用(分支,标签,注释,存储等)均使用相同的系统。这些是:
引用日志基于引用名称存储在
.git/logs/refs/
中,但有一个异常(exception):HEAD
的引用日志存储在.git/logs/HEAD
中而不是.git/logs/refs/HEAD
中。引用是“松散的”或“打包的”。打包的refs在
.git/packed-refs
中,它是(SHA-1,refname)对的平面文件,用于简单的ref,还有带注释标签的其他信息。 “宽松”的裁判在.git/refs/name
中。这些文件包含原始SHA-1(可能是最常见的)或文字字符串ref:
,后跟符号引用的另一个引用的名称(通常仅适用于HEAD
,但您可以创建其他引用)。符号引用没有打包(或者至少,我似乎无法做到这一点:-))。打包标签和“空闲”分支头(那些没有被主动更新的分支头)可以节省空间和时间。您可以使用
git pack-refs
执行此操作。但是,git gc
会为您调用git pack-refs
,因此通常您不需要自己执行此操作。
关于git - git分支和标签如何存储在磁盘中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666331/