查找Git存储库大小的简单方法是什么?
我指的不是存储库根目录上的du -h。我有很多被忽略的文件,所以这个大小与我的总存储库大小不同。实际上,我想知道克隆存储库时会传输多少数据。
查找Git存储库大小的简单方法是什么?
我指的不是存储库根目录上的du -h。我有很多被忽略的文件,所以这个大小与我的总存储库大小不同。实际上,我想知道克隆存储库时会传输多少数据。
当前回答
要了解更多细节,您可以使用git-size。在——verbose设置中,示例输出如下所示。文件总大小行只计算最大提交的文件大小。您需要对大小值求和。
$ git-sizer --verbose Processing blobs: 1652370 Processing trees: 3396199 Processing commits: 722647 Matching commits to trees: 722647 Processing annotated tags: 534 Processing references: 539 | Name | Value | Level of concern | | ---------------------------- | --------- | ------------------------------ | | Overall repository size | | | | * Commits | | | | * Count | 723 k | * | | * Total size | 525 MiB | ** | | * Trees | | | | * Count | 3.40 M | ** | | * Total size | 9.00 GiB | **** | | * Total tree entries | 264 M | ***** | | * Blobs | | | | * Count | 1.65 M | * | | * Total size | 55.8 GiB | ***** | | * Annotated tags | | | | * Count | 534 | | | * References | | | | * Count | 539 | | | | | | | Biggest objects | | | | * Commits | | | | * Maximum size [1] | 72.7 KiB | * | | * Maximum parents [2] | 66 | ****** | | * Trees | | | | * Maximum entries [3] | 1.68 k | * | | * Blobs | | | | * Maximum size [4] | 13.5 MiB | * | | | | | | History structure | | | | * Maximum history depth | 136 k | | | * Maximum tag depth [5] | 1 | | | | | | | Biggest checkouts | | | | * Number of directories [6] | 4.38 k | ** | | * Maximum path depth [7] | 13 | * | | * Maximum path length [8] | 134 B | * | | * Number of files [9] | 62.3 k | * | | * Total size of files [9] | 747 MiB | | | * Number of symlinks [10] | 40 | | | * Number of submodules | 0 | | [1] 91cc53b0c78596a73fa708cceb7313e7168bb146 [2] 2cde51fbd0f310c8a2c5f977e665c0ac3945b46d [3] 4f86eed5893207aca2c2da86b35b38f2e1ec1fc8 (refs/heads/master:arch/arm/boot/dts) [4] a02b6794337286bc12c907c33d5d75537c240bd0 (refs/heads/master:drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h) [5] 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c (refs/tags/v2.6.11) [6] 1459754b9d9acc2ffac8525bed6691e15913c6e2 (589b754df3f37ca0a1f96fccde7f91c59266f38a^{tree}) [7] 78a269635e76ed927e17d7883f2d90313570fdbc (dae09011115133666e47c35673c0564b0a702db7^{tree}) [8] ce5f2e31d3bdc1186041fdfd27a5ac96e728f2c5 (refs/heads/master^{tree}) [9] 532bdadc08402b7a72a4b45a2e02e5c710b7d626 (e9ef1fe312b533592e39cddc1327463c30b0ed8d^{tree}) [10] f29a5ea76884ac37e1197bef1941f62fda3f7b99 (f5308d1b83eba20e69df5e0926ba7257c8dd9074^{tree})
顺便说一句:如果你想最小化克隆的大小,你可以使用git clone的——depth 1参数。
其他回答
git命令
git count-objects -v
可以很好地估计git存储库的大小。如果没有-v标志,它只告诉您解包文件的大小。这个命令可能不在你的$PATH中,你可能需要找到它(例如,在Ubuntu上,我在/usr/lib/git-core/中找到了它)。
从Git手册页:
- v,详细 除了松散对象的数量和所消耗的磁盘空间之外, 它报告内包对象的数量、包的数量、磁盘 这些包所消耗的空间,以及可以容纳的对象数量 通过运行git prune-pack删除。
输出如下所示:
count: 1910
size: 19764
in-pack: 41814
packs: 3
size-pack: 1066963
prune-packable: 1
garbage: 0
你要找的是大号的。这是所有打包提交对象的大小,或者是新克隆存储库的最小可能大小。
如果你使用git LFS, git count-objects不会计算你的二进制文件,而只计算指向它们的指针。
如果你的LFS文件是由Artifactorys管理的,你应该使用REST API:
从任何搜索引擎获取www.jfrog.com API 查看获取存储摘要信息
更新git 1.8.3引入了一个更有效的方法来获得一个大致的大小:git count-objects -vH(参见@VonC的回答)
对于“完全大小”的不同概念,你可以使用:
git bundle create tmp.bundle --all
du -sh tmp.bundle
接近(但不精确:)
git gc
du -sh .git/
如果是后者,你还可以计算:
钩子 配置(远程,推送分支,设置(空白,合并,别名,用户 细节等) stashes(参见我能从远程回购取一个存储到本地分支吗?也) Rerere缓存(可以获得相当大的缓存) reflogs 备份(从过滤器分支,例如)和各种其他东西(中间 状态从重基,等分等)
如果存储库在GitHub上,您可以使用开源Android应用程序Octodroid,该应用程序默认显示存储库的大小。
例如,使用mptcp存储库:
免责声明:我并没有创造Octodroid。
要了解更多细节,您可以使用git-size。在——verbose设置中,示例输出如下所示。文件总大小行只计算最大提交的文件大小。您需要对大小值求和。
$ git-sizer --verbose Processing blobs: 1652370 Processing trees: 3396199 Processing commits: 722647 Matching commits to trees: 722647 Processing annotated tags: 534 Processing references: 539 | Name | Value | Level of concern | | ---------------------------- | --------- | ------------------------------ | | Overall repository size | | | | * Commits | | | | * Count | 723 k | * | | * Total size | 525 MiB | ** | | * Trees | | | | * Count | 3.40 M | ** | | * Total size | 9.00 GiB | **** | | * Total tree entries | 264 M | ***** | | * Blobs | | | | * Count | 1.65 M | * | | * Total size | 55.8 GiB | ***** | | * Annotated tags | | | | * Count | 534 | | | * References | | | | * Count | 539 | | | | | | | Biggest objects | | | | * Commits | | | | * Maximum size [1] | 72.7 KiB | * | | * Maximum parents [2] | 66 | ****** | | * Trees | | | | * Maximum entries [3] | 1.68 k | * | | * Blobs | | | | * Maximum size [4] | 13.5 MiB | * | | | | | | History structure | | | | * Maximum history depth | 136 k | | | * Maximum tag depth [5] | 1 | | | | | | | Biggest checkouts | | | | * Number of directories [6] | 4.38 k | ** | | * Maximum path depth [7] | 13 | * | | * Maximum path length [8] | 134 B | * | | * Number of files [9] | 62.3 k | * | | * Total size of files [9] | 747 MiB | | | * Number of symlinks [10] | 40 | | | * Number of submodules | 0 | | [1] 91cc53b0c78596a73fa708cceb7313e7168bb146 [2] 2cde51fbd0f310c8a2c5f977e665c0ac3945b46d [3] 4f86eed5893207aca2c2da86b35b38f2e1ec1fc8 (refs/heads/master:arch/arm/boot/dts) [4] a02b6794337286bc12c907c33d5d75537c240bd0 (refs/heads/master:drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h) [5] 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c (refs/tags/v2.6.11) [6] 1459754b9d9acc2ffac8525bed6691e15913c6e2 (589b754df3f37ca0a1f96fccde7f91c59266f38a^{tree}) [7] 78a269635e76ed927e17d7883f2d90313570fdbc (dae09011115133666e47c35673c0564b0a702db7^{tree}) [8] ce5f2e31d3bdc1186041fdfd27a5ac96e728f2c5 (refs/heads/master^{tree}) [9] 532bdadc08402b7a72a4b45a2e02e5c710b7d626 (e9ef1fe312b533592e39cddc1327463c30b0ed8d^{tree}) [10] f29a5ea76884ac37e1197bef1941f62fda3f7b99 (f5308d1b83eba20e69df5e0926ba7257c8dd9074^{tree})
顺便说一句:如果你想最小化克隆的大小,你可以使用git clone的——depth 1参数。