彻底删除Git中的文件
目录
Github 不允许上传超过 100M 的文件。如果大文件只在最近一次提交中,可以使用参考 GitHub 的帮助《Removing files from a repository’s history》。
从最近尚未上传的提交中删除添加的文件
删除文件
git rm --cached giant_file
修改最近一次提交
git commit --amend -CHEAD
上传到origin
git push
如果需要删除的文件已出现在多个提交中,就必须修改 git 的 commit 和 blob 等对象,参考 GitHub 的帮助《Remove sensitive data》。推荐使用 BFG Repo-Cleaner 删除文件的历史记录,比说使用 git filter-branch 更加方便。
使用BFG工具彻底删除Git中的文件
BFG Repo-Cleaner 时由 Roberto Tyley 开发的工具,适合删除下面类型的数据:
- 大文件
- 密码、证书和其它种类的私人数据
安装
该工具使用 Scala 开发,可以从项目网站下载 jar 包直接使用,将 jar 包放到 CLASSPATH 路径中,即可使用下面的命令运行:
java -jar bfg.jar --help
使用
进入到某个Git项目目录中
cd some-git-project
删除50M以上的文件:
java -jar bfg.jar --no-blob-protection --strip-blobs-bigger-than 50M
更新git项目
git reflog expire --expire=now --all && git gc --prune=now --aggressive
此时可以推送成功
git push
BFG还可以删除特定的文件
java -jar bfg.jar bfg --delete-files id_{dsa,rsa}更多使用方法参看项目网页说明。
参考资料
《Remove sensitive data》
BFG-Repo Cleaner项目网站
《处理GitHub不允许上传大于100M文件问题》
