You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算待提交仓库大小及提交后将推送的文件大小

嘿,我来帮你理清这两个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..HEAD
    
    然后查看temp.bundle的文件大小(Windows右键属性,Mac/Linux用ls -lh temp.bundle),这个大小就是实际推送时的传输大小,用完记得删掉这个临时文件就行。

内容的提问来源于stack exchange,提问作者user9343376

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:56:13