已提交大文件后文件变小,如何向GitHub推送提交?
解决GitHub推送因历史大文件失败的问题
你的问题出在Git会检查所有提交历史里的文件大小——哪怕最后一个提交把文件改小到65MB,第一个提交里的100MB版本依然在历史记录里,触发了GitHub的限制。下面给你两种可行的解决办法:
方案一:彻底清掉历史里的大文件
如果不需要保留那个大文件的历史版本,直接用git filter-repo重写历史,把它从所有提交里删掉:
- 打开终端(RStudio里可以点
Tools→Shell调出) - 运行命令,把
<大文件的完整路径>换成你实际的文件路径:git filter-repo --path <大文件的完整路径> --invert-paths - 重写完成后,强制推送到远程仓库(替换成你的分支名,比如main):
git push --force origin main注意:强制推送会覆盖远程分支的历史,要是有其他同事一起用这个仓库,得提前跟他们说一声同步修改。
方案二:用Git LFS接管历史中的大文件
如果想保留该文件的所有历史版本,就用Git LFS来存储大文件的各个版本:
- 先在本地初始化LFS:
git lfs install - 跟踪你的大文件:
git lfs track "<大文件的完整路径>" - 把生成的
.gitattributes文件提交:git add .gitattributes git commit -m "用Git LFS跟踪大文件" - 重写历史,让LFS接管所有历史里的这个大文件:
git filter-repo --force --blob-cat-all 'git lfs migrate import --no-rewrite --stdin' - 最后强制推送到远程:
git push --force origin main
RStudio后续操作说明
做完上面的终端命令后,回到RStudio,它会自动识别仓库的变更,之后你依然可以用熟悉的「Git」标签进行常规的提交、拉取和推送操作。
内容的提问来源于stack exchange,提问作者Shardul Nazirkar
相关产品推荐
相关产品推荐

