如在使用Git过程中不小心将较大的二进制文件加入仓库,那么仓库大小很快就会超过规定的配额,在Push的时候会报下面的错误:
remote: Powered by GITEE.COM [GNK-6.4] remote: error: File: c91e5de4f55bedd0669db01036fc131ea8e516ce 380.66 MB, exceeds 100.00 MB. remote: Use command below to see the filename: remote: git rev-list --objects --all | grep c91e5de4f55bedd0669db01036fc131ea8e516ce remote: Please remove the file from history and try again. (https://gitee.com/help/articles/4232)
好面代码中以给出了 c91e5de4f55bedd0669db01036fc131ea8e516ce ,可以通过以下命名知道是哪个文件超过限制大小
git rev-list --objects --all | grep c91e5de4f55bedd0669db01036fc131ea8e516ce
执行命令后会获取到文件名,也可以通过下面的步骤2通一查看已经知道的大文件。
0cc3dfbe8eec2fa11e941c9001f3f062ec66cf3c goviewxw/鄂尔多斯市.zip
然后就可以执行删除,强行远程推送,清除缓存就ok了,下面是详细的步骤
1. 压缩历史记录 删除无用的对象 优化存储结构 清理无效的引用 清除过期的临时文件
git gc 2. 查找大文件,"tail -20"中的20表示条数 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20 | awk '{print$1}')" 3. 删除大文件,”xxx.framework“是上一步中列出的大文件路径,遍历所有的commit,删除指定的文件,重写历史commit git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch xxx.framework' --prune-empty --tag-name-filter cat -- --all 4. 强行远程推送 git push origin --force --all 5. 清除缓存 rm -rf .git/refs/original/ git reflog expire --expire=now --all git gc --prune=now // 查看项目仓库大小 git count-objects -v
标签:文件,git,remote,objects,--,查找,c91e5de4f55bedd0669db01036fc131ea8e516ce From: https://www.cnblogs.com/wolfocme110/p/18413480