Git LFS推送Angular项目因大文件超限失败求助
解决Git LFS追踪大文件仍推送失败的问题
核心原因:追踪规则对已提交的历史文件无效
Git LFS只作用于还没被提交到Git历史的文件,那些已经被你commit过的.pack大文件,早就存在于Git的历史记录里了,光加追踪规则根本管不到它们,这才是问题所在——不是你的追踪语法错了。
具体解决步骤
1. 确认LFS追踪规则是否生效
先执行命令查看当前的LFS追踪列表,验证规则是否正确添加:
git lfs track
只要输出里能看到*.pack或者目标目录的追踪规则,就说明语法没问题。
2. 清理Git历史中的大文件
用git filter-repo工具彻底移除历史里的缓存文件(这个工具比旧的git filter-branch更安全稳定):
git filter-repo --path angular-project/src/.angular/cache/14.1.2/angular-webpack --invert-paths
这个命令会删除所有涉及该缓存目录的历史提交记录。
3. 重新配置LFS并提交
先确保追踪规则正确(直接追踪所有.pack文件最稳妥):
git lfs track "*.pack"
然后把.gitattributes文件提交到仓库:
git add .gitattributes git commit -m "Set up Git LFS for .pack files"
4. 强制推送更新后的仓库
因为修改了Git历史,需要强制覆盖远程仓库:
git push origin main --force
⚠️ 注意:如果有其他人在协作这个仓库,执行前要提前沟通,避免覆盖其他人的修改。
长期解决方案:忽略缓存目录
.angular/cache是本地构建生成的缓存文件,完全没必要提交到远程仓库,直接在项目根目录的.gitignore中添加一行:
angular-project/src/.angular/cache/
这样以后就不会再把这类缓存文件误提交,从根源避免大文件问题。
内容的提问来源于stack exchange,提问作者Peter Moore
相关产品推荐
相关产品推荐

