Git迁移至Azure报错TF402462:推送因大小超5120MB被拒
解决Azure Git迁移时TF402462大小超限问题
1. 定位隐藏的大文件/历史提交
先找出.git文件夹里占用空间最大的对象及其关联的提交和文件,确认是否有遗漏的大文件未被LFS迁移:
# 列出前20个最大的Git对象SHA值 git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -20 | awk '{print$1}' | \ # 关联到具体的提交和文件路径 xargs -I {} git rev-list --objects --all | grep {}
也可以用LFS自带命令检查迁移覆盖情况:
git lfs migrate info --everything
2. 补全LFS迁移范围
如果发现有不在原include列表里的大文件,更新迁移命令加入遗漏的后缀,重新执行迁移:
git lfs migrate import --everything --include="*.zip,*.a,*.tar,*.dll,*.lib,*.xz,*.bz2,*.exe,*.ttf,*.ttc,*.db,*.mp4,*.tgz,*.pdf,*.dcm,*.so,*.pdb,*.msi,*.jar,*.bin,*.sqlites,遗漏的文件后缀"
注意:Azure默认单个LFS文件上限为4GB,若存在超过该大小的文件,需联系管理员调整配额或拆分文件。
3. 彻底清理Git历史残留对象
LFS迁移后,原大文件的历史版本仍会留在.git文件夹中,执行以下命令清理未被引用的对象:
git reflog expire --expire=now --all git gc --prune=now --aggressive
4. 验证仓库体积
清理后检查仓库实际大小,确认是否降到5GB以下:
git count-objects -vH
若仍超标,检查所有分支和标签,定位未处理的大提交:
# 遍历所有分支,输出各分支体积 git branch -a | while read branch; do echo "$branch: $(git rev-list --objects $branch | git cat-file --batch-check="%(objectsize) %(rest)" | awk '{sum+=$1} END {print sum/1024/1024/1024 " GB"}')"; done
5. 重新推送
确认体积合规后,重新执行推送:
git push --mirror
若仍报错,尝试分分支推送,定位具体触发超限的分支后针对性处理。
备选方案(最后手段)
若上述方法均无效,可新建干净的Azure仓库,仅迁移当前分支的最新代码,手动选择性迁移必要的历史提交(会丢失部分历史)。
内容的提问来源于stack exchange,提问作者Sijith
相关产品推荐
相关产品推荐

