问题描述
我不小心将一个大文件推送到Bitbucket中的远程git reposiroy。
该文件的扩展名为.webm
。
我将*.webm
放在.gitignore
中,然后为了删除它,我运行了BFG:
java -jar bfg-1.13.0.jar --delete-files *.webm
git reflog expire --expire=Now --all && git gc --prune=Now --aggressive
git push origin --force
问题是最后一个命令一直将原始.webm文件推送到远程存储库,而bitbucket却说我的存储库已达到1Gb +的已用空间。
如果我运行而不是最后一条命令git push -u origin master
,则表明我需要执行git pull
,这使我再次下载了大文件。
解决方法
请参阅BFG文档的"Your files are sacred"段落:
默认情况下,BFG不会修改您在master(或“ HEAD”)分支上的最新提交的内容,即使它会清除之前的所有提交。
那是因为您的最新提交很可能是您部署到生产中的提交
(...)
如果要关闭保护功能(通常不建议这样做),可以使用
--no-blob-protection
标志:$ bfg --strip-biggest-blobs 100 --no-blob-protection repo.git
另一种方法是手动将其从头提交中删除:
git rm --cached thatfile.webm
git commit --amend
这可以解决您的问题吗?