<p>用du -sh .统计Git仓库总磁盘占用(含.git),du -sh .git查看版本元数据体积,du -sh | sort -hr | head -n 8定位.git内最大子项,再用du -sh objects/pack/.pack | sort -hr | head -n 3分析具体大包文件。</p>

你需要在Mac终端里快速知道一个Git仓库整体占了多少磁盘空间,而不是只看工作区文件大小——因为.git目录本身可能藏有历史对象、打包文件、LFS指针甚至残留的巨量二进制快照,光看访达显示的“大小”会严重低估真实占用。
用du命令直接统计整个仓库目录
这一步最直白,把仓库当普通文件夹处理,连.git子目录一起算进去。
打开终端,cd进入该仓库根目录(例如 cd ~/Projects/my-app)。
执行:du -sh . ——注意末尾是英文句点,代表当前目录,【必须加 -s 才能汇总,否则会逐行列出每个子项】。
输出类似 347M .,这个数值就是该仓库全部内容(含.git)的真实磁盘占用。
单独查看.git目录的精确体积
当你怀疑.git内部膨胀时,需要剥离工作区干扰,专注检查版本控制元数据本身。
确保已在仓库根目录下,运行:du -sh .git。
若返回 Permission denied 提示,说明某些对象被锁或权限受限;此时加 2>/dev/null 过滤错误: du -sh .git 2>/dev/null。
【注意:.git目录内可能包含 packed-refs、objects/pack/ 下的 .pack 文件,它们常是体积大户,但 du 会自动计入总和,无需手动展开】。
定位.git中最大的子目录或文件
如果 .git 占了几个GB,得知道钱花在哪了。下面分两步排查:
第一步:进入 .git 目录 → cd .git。
第二步:列出一级子项大小并排序 → du -sh * | sort -hr | head -n 8。
常见高占比项包括:objects/pack(打包的提交快照)、lfs/(Git LFS 下载的原始大文件缓存)、svn/(旧迁移残留)、hooks/(一般很小,若异常大则需检查是否误存了二进制)。
若想进一步钻入 objects/pack 查看具体哪个 .pack 最大: du -sh objects/pack/*.pack 2>/dev/null | sort -hr | head -n 3。


















