如何计算待提交仓库大小及提交后将推送的文件大小
嘿,我来帮你理清这两个Git仓库大小计算的实用技巧,都是日常开发里经常用到的👇
一、计算本地代码仓库的总大小
本地仓库的大小包括所有已提交的历史、暂存的文件、未跟踪的文件,以及Git内部的对象存储(.git目录),有两种常用方法:
- 用Git内置命令精准统计:
直接在仓库根目录运行git count-objects -vH,这个命令会输出Git对象库的详细统计,其中size字段就是仓库实际占用的磁盘空间(以人类可读的KB/MB/GB显示),这个结果是最准确的,因为它只统计Git管理的内容,排除了非Git的临时文件。 - 直接查看文件夹磁盘占用:
如果你想快速看整个仓库文件夹的大小(包括.git目录和所有本地文件),Windows可以右键仓库文件夹→「属性」查看;Mac/Linux终端里运行du -sh /path/to/your/repo,-s表示汇总总大小,-h是人类可读格式,不过这个结果会包含一些Git没跟踪的文件,比如本地的日志、临时构建文件之类的。
二、计算提交后将推送至远程仓库的文件大小
这个得分两种场景,分别对应不同的命令:
场景1:已经暂存(git add过)但还没提交的文件
想知道这些暂存文件提交后,最终推送到远程的大小变化,可以用:
- 先看单个文件的大小变化:运行
git diff --cached --stat,会列出每个暂存文件的增减字节数(比如README.md | 20 +-表示新增20字节)。 - 汇总总大小:Mac/Linux可以用这条命令直接算出总变化量(转成MB):
其中git diff --cached --numstat | awk '{sum += $1 + $2} END {print sum/1024/1024 " MB"}'--numstat会输出每行的新增/删除字节数,awk负责求和并转换单位。
场景2:已经提交但还没推送的本地提交
比如你的本地main分支比远程origin/main多了几个提交,想知道这些待推送提交的总大小:
- 查看提交里的文件变化详情:运行
git log origin/main..HEAD --stat,会逐个显示每个待推送提交的文件大小变化。 - 汇总总大小(原始文件大小):用
git diff origin/main..HEAD --numstat | awk '{sum += $1 + $2} END {print sum/1024/1024 " MB"}' - 查看实际推送的压缩后大小:Git推送的是压缩后的对象,上面的方法算的是原始文件大小。如果想知道真实推送的字节数,可以生成一个临时的Git压缩包:
然后查看git bundle create temp.bundle origin/main..HEADtemp.bundle的文件大小(Windows右键属性,Mac/Linux用ls -lh temp.bundle),这个大小就是实际推送时的传输大小,用完记得删掉这个临时文件就行。
内容的提问来源于stack exchange,提问作者user9343376
相关产品推荐
相关产品推荐

