TFVC迁移至Git(含历史)时Git LFS推送超5GB限制报错求助
TFVC迁移Git时推送超5120MB限制的问题排查
问题描述
尝试将仓库从TFVC迁移至Git并保留历史记录,使用git tfs将TFVC仓库的某个分支克隆到本地,同时启用git lfs跟踪大文件,准备推送到空Git仓库。但推送时出现错误:
! [remote rejected] master -> master (TF402462: This push was rejected because its size is greater than the 5120 MB limit for pushes in this repository.)
操作步骤
- 使用以下命令克隆TFVC仓库分支到本地:
git tfs clone http://myTfsServer:8080/tfs/TfsRepository $/ProjectName/ProjectBranch - 克隆空Git仓库,添加远程源:
git remote add origin '*URL of the empty git repo*' - 启用LFS,跟踪大文件,提交后执行推送命令:
git push origin -u --all
疑问:无法定位问题所在,每次推送都提示无法上传超过5120MB的内容,是否在使用git lfs时出错?该错误原因是什么?
错误原因及解决方向
1. Git LFS未接管历史中的大文件
启用LFS后仅跟踪了当前状态的大文件,但历史提交中已存在的大文件并未被LFS转换。Git推送会包含所有历史提交内容,这些未被处理的大文件仍以普通Git对象存在,直接导致推送包体积超限。
解决办法:
- 使用
git lfs migrate重写全量历史,将符合规则的大文件转为LFS对象:# 针对所有分支的所有历史,跟踪指定类型文件(示例:压缩包、安装包) git lfs migrate import --everything --include="*.zip,*.exe,*.iso,*.tar.gz" - 重写历史后强制推送(仅适用于空远程仓库,避免影响他人本地仓库):
git push origin -u --all --force
2. LFS跟踪规则不完整
设置的跟踪规则可能遗漏了部分大文件,导致这类文件仍留在Git仓库中占用体积。
解决办法:
- 检查当前LFS跟踪规则:
git lfs track - 补充遗漏的文件类型:
git lfs track "*.pdf" git lfs track "*.psd" - 提交记录跟踪规则的
.gitattributes文件:git add .gitattributes git commit -m "Update LFS tracking rules"
3. Git仓库历史累积数据过大
即使LFS处理了所有大文件,TFVC迁移来的历史可能包含大量小文件的累积提交,导致仓库整体体积仍超5GB限制。
解决办法:
- 清理仓库冗余对象:
git gc --aggressive --prune=all - 若无需完整保留历史,可截断历史仅保留最近N个提交:
# 保留最近100个提交 git reset --hard HEAD~100 git commit --amend --no-edit git push origin -u --all --force
4. 远程仓库单推送包限制为5GB
错误提示明确远程仓库单次推送的包大小限制为5120MB,即使LFS处理后,单次推送的总数据量(含Git历史和LFS指针)仍可能超限。
解决办法:
- 分批次推送历史:
# 先推送前50个提交 git push origin HEAD~50:master # 再推送剩余提交 git push origin -u master
内容的提问来源于stack exchange,提问作者Santoshkumar
相关产品推荐
相关产品推荐

