查找Git存储库大小的简单方法是什么?
我指的不是存储库根目录上的du -h。我有很多被忽略的文件,所以这个大小与我的总存储库大小不同。实际上,我想知道克隆存储库时会传输多少数据。
查找Git存储库大小的简单方法是什么?
我指的不是存储库根目录上的du -h。我有很多被忽略的文件,所以这个大小与我的总存储库大小不同。实际上,我想知道克隆存储库时会传输多少数据。
当前回答
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 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 备份(从过滤器分支,例如)和各种其他东西(中间 状态从重基,等分等)
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
你要找的是大号的。这是所有打包提交对象的大小,或者是新克隆存储库的最小可能大小。
如果存储库在GitHub上,您可以使用开源Android应用程序Octodroid,该应用程序默认显示存储库的大小。
例如,使用mptcp存储库:
免责声明:我并没有创造Octodroid。
注意,从git 1.8.3(2013年4月22日)开始:
“git计数对象”——人类可读的“又名“-H”选项,显示各种大数字在Ki/Mi/GiB按比例缩放必要。
这可以与Jack Morrison在他的回答中提到的-v选项结合起来。
git gc
git count-objects -vH
(正如A-B-B的回答所提到的,git gc很重要)
加上(仍然是git 1.8.3),输出更完整:
"git count-objects -v"学会了报告对象存储中剩余的临时包文件和其他垃圾。
如果你已经将git存储库推送到github,这个答案也适用。
您可以在Accounts设置中轻松找到每个存储库的大小