You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Git-LFS检查各仓库大小及排查GitHub GitLFS存储异常

嘿,我来帮你搞定这两个Git LFS相关的问题,都是开发者常遇到的坑,一步步来:

1. 如何使用Git-LFS检查每个仓库的大小?

要查看单个或多个仓库的Git LFS存储占用,你可以用以下方法:

单个本地仓库检查

进入仓库根目录后,执行以下命令:

  • 先列出所有被LFS追踪的文件:
    git lfs ls-files
    
    这个命令会显示每个LFS文件的OID哈希和文件路径。
  • 统计这些LFS文件的总占用空间:
    git lfs ls-files | cut -d' ' -f3- | xargs du -ch
    
    最后一行的total就是当前仓库LFS文件的总大小。

批量检查多个本地仓库

如果要一次性检查本地所有仓库的LFS占用,可以写个简单的Shell脚本:

# 替换为你的本地仓库根目录路径
REPO_ROOT="/path/to/your/repos"

for repo in "$REPO_ROOT"/*; do
  if [ -d "$repo/.git" ]; then
    echo "=== 仓库: $(basename "$repo") ==="
    cd "$repo" && git lfs ls-files | cut -d' ' -f3- | xargs du -ch 2>/dev/null || echo "无LFS文件"
    echo "-------------------------"
  fi
done

运行后会逐个输出每个仓库的LFS存储情况。

2. 解决GitHub LFS超配额但仓库列表无异常的问题

你遇到的这种情况很常见,通常是这几个原因导致的,对应解决方法如下:

原因1:已删除的仓库仍占用LFS存储

GitHub删除仓库后,LFS对象不会立即被清理,会保留90天左右才会自动删除。这些已删除仓库的LFS占用不会显示在「Repositories」标签页的活跃仓库列表里,但会算入你的总配额。

解决方法

  • 如果你不急着释放空间,等90天自动清理即可。
  • 若需要立即释放,可联系GitHub官方支持,说明情况请求手动清理已删除仓库的LFS对象。

原因2:仓库中存在已删除但未清理的LFS对象

你可能曾经推送过LFS文件到GitHub,之后删除了本地文件并提交了删除操作,但远程的LFS对象并没有被删除——Git LFS不会自动清理远程仓库中不再被任何分支/标签引用的对象,这些“孤儿”对象会一直占用存储空间。

解决方法

  1. 先在本地仓库清理未被引用的LFS对象(预览模式,不会实际删除):
    git lfs prune --dry-run
    
    确认要删除的对象后,去掉--dry-run执行实际删除:
    git lfs prune
    
  2. 删除远程仓库中的无用LFS对象:
    针对特定分支(比如main),执行:
    git lfs push --delete origin main
    
    这个命令会删除该分支上不再被引用的LFS对象。如果需要清理所有分支的无用对象,建议直接联系GitHub支持协助操作。

原因3:遗漏了fork仓库的LFS占用

有时候fork的仓库如果修改并推送过LFS文件,会占用你的个人配额,而这类仓库可能被你忽略了。

解决方法
用GitHub CLI(先安装并登录)执行以下命令,列出你所有仓库(包括fork)的LFS存储详情:

gh repo list --limit 1000 --json nameWithOwner,lfsStorageBytes

这个命令会输出每个仓库的LFS存储字节数,能快速定位到占用最大的仓库。

终极排查方案

如果以上方法都没找到问题,可以直接联系GitHub支持,他们能后台查看具体是哪些对象/仓库占用了你的LFS存储空间,效率更高。

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

火山引擎 最新活动