如何用Git-LFS检查各仓库大小及排查GitHub GitLFS存储异常
嘿,我来帮你搞定这两个Git LFS相关的问题,都是开发者常遇到的坑,一步步来:
1. 如何使用Git-LFS检查每个仓库的大小?
要查看单个或多个仓库的Git LFS存储占用,你可以用以下方法:
单个本地仓库检查
进入仓库根目录后,执行以下命令:
- 先列出所有被LFS追踪的文件:
这个命令会显示每个LFS文件的OID哈希和文件路径。git lfs ls-files - 统计这些LFS文件的总占用空间:
最后一行的git lfs ls-files | cut -d' ' -f3- | xargs du -chtotal就是当前仓库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不会自动清理远程仓库中不再被任何分支/标签引用的对象,这些“孤儿”对象会一直占用存储空间。
解决方法:
- 先在本地仓库清理未被引用的LFS对象(预览模式,不会实际删除):
确认要删除的对象后,去掉git lfs prune --dry-run--dry-run执行实际删除:git lfs prune - 删除远程仓库中的无用LFS对象:
针对特定分支(比如main),执行:
这个命令会删除该分支上不再被引用的LFS对象。如果需要清理所有分支的无用对象,建议直接联系GitHub支持协助操作。git lfs push --delete origin main
原因3:遗漏了fork仓库的LFS占用
有时候fork的仓库如果修改并推送过LFS文件,会占用你的个人配额,而这类仓库可能被你忽略了。
解决方法:
用GitHub CLI(先安装并登录)执行以下命令,列出你所有仓库(包括fork)的LFS存储详情:
gh repo list --limit 1000 --json nameWithOwner,lfsStorageBytes
这个命令会输出每个仓库的LFS存储字节数,能快速定位到占用最大的仓库。
终极排查方案
如果以上方法都没找到问题,可以直接联系GitHub支持,他们能后台查看具体是哪些对象/仓库占用了你的LFS存储空间,效率更高。
内容的提问来源于stack exchange,提问作者Jake Pan




