git count-objects -vH的大小和大小包的差异

hgtggwj0  于 2023-06-20  发布在  Git
关注(0)|答案(1)|浏览(129)

我想知道我的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

提前感谢和最好的,弗洛

lmvvr0a8

lmvvr0a81#

为了让这些数字有意义,你必须了解松散的物体和储存在包中的物体之间的区别。Git有两种方式在仓库和沙箱中存储对象:

  • 包在单个文件中包含整组对象,
  • 松散对象被存储为每个文件一个对象。

包在磁盘存储方面更有效,但创建它们可能会更慢,而松散对象创建起来更快。
当你在Git中进行操作时,比如创建提交,它会出于速度的原因创建松散的对象,但是偶尔会进行优化,其中无法访问的对象可能会被删除,松散的对象会被合并到包中。例如,一个新的克隆通常只有一个包,没有松散的对象,但是一个你做了很多提交的沙箱可能有一堆松散的对象。
当你查看.git/objects/时,你会看到一个名为pack/的目录,其中包含包,还有一堆目录,它们的名称是一个两位数的十六进制代码(例如,04/8c/f2/),用于松散对象。
最后回到你的问题,countsize是关于松散对象的统计信息,而in-packpackssize-pack是关于存储在包中的对象的统计信息。

相关问题