仅推送指定文件夹到GitHub时触发大文件限制报错如何解决
问题根本原因
你虽然本次只提交了android文件夹的内容,但你本地仓库的历史提交记录中,已经存在这个ios目录下的超大文件,git推送时会把所有待同步的历史提交内容一起推送到远端,因此触发了大小限制。
解决步骤
第一步:清理暂存区与未推送的本地提交中的冗余文件
首先把你刚才未推送成功的提交重置:
git reset --soft HEAD~1
将非android目录的多余文件从git追踪列表中移除(--cached参数只会删除git追踪记录,不会删除你本地的实际文件):
git rm -r --cached .
重新仅添加android目录并提交:
git add android/ git commit -m "仅提交android目录内容"
此时先尝试推送,如果仍报相同的大文件错误,继续执行第二步。
第二步:清理历史提交记录中的大文件
如果第一步推送失败,说明大文件存在于更早的未推送本地提交历史中,需要清理git历史记录:
# 单独删除指定大文件的历史记录 git filter-repo --invert-paths --path 'build/ios/Release-iphoneos/Flutter.framework/Flutter' # 如果整个build目录都不需要提交,直接过滤整个build目录更高效 # git filter-repo --invert-paths --path 'build/'
第三步:配置.gitignore避免后续误提交冗余文件
在项目根目录创建.gitignore文件,添加以下规则:
# 忽略所有构建产物目录 build/ # 忽略整个ios目录(如果不需要提交ios相关代码) ios/ # 可自行添加其他不需要提交的本地文件规则
提交.gitignore配置:
git add .gitignore git commit -m "添加.gitignore规则"
第四步:推送至远端
git push origin dev
可选快速方案(无需保留本地提交历史的场景)
如果你不需要保留本地仓库之前的所有提交记录,可通过重新初始化git仓库的方式快速解决:
- 删除项目根目录下的
.git文件夹 - 执行以下命令:
git init git remote add origin <你的远端仓库地址> git checkout -b dev git add android/ git add .gitignore git commit -m "首次提交android目录内容" git push -f origin dev
内容的提问来源于stack exchange,提问作者wahyu
相关产品推荐
相关产品推荐

