我想知道我的git repo的大小。我很快就找到了git count-objects
命令,阅读了它的documentation以及在线其他地方的相关内容,但无法找到关于输出元素含义的简明语言和直观解释。我特别感兴趣的是尺码、尺码包和它们的区别。
git count-objects -vh
count: 343
size: 1.34 MiB
in-pack: 21183
packs: 3
size-pack: 107.51 MiB
prune-packable: 16
garbage: 0
size-garbage: 0 bytes
提前感谢和最好的,弗洛
1条答案
按热度按时间lmvvr0a81#
为了让这些数字有意义,你必须了解松散的物体和储存在包中的物体之间的区别。Git有两种方式在仓库和沙箱中存储对象:
包在磁盘存储方面更有效,但创建它们可能会更慢,而松散对象创建起来更快。
当你在Git中进行操作时,比如创建提交,它会出于速度的原因创建松散的对象,但是偶尔会进行优化,其中无法访问的对象可能会被删除,松散的对象会被合并到包中。例如,一个新的克隆通常只有一个包,没有松散的对象,但是一个你做了很多提交的沙箱可能有一堆松散的对象。
当你查看
.git/objects/
时,你会看到一个名为pack/
的目录,其中包含包,还有一堆目录,它们的名称是一个两位数的十六进制代码(例如,04/
,8c/
,f2/
),用于松散对象。最后回到你的问题,
count
和size
是关于松散对象的统计信息,而in-pack
、packs
和size-pack
是关于存储在包中的对象的统计信息。