git仓库在日常使用中经常会因为.gitignore 忽略不到位,导致误推送很多不需要的大文件。这种情况下即使你再删除再推送也没办法减少仓库的占用空间,下面介绍一种能够彻底删除这些不需要文件的方法。BFG下载
第一步:安装 BFG 命令行工具
BFG 依赖 Java 环境,所以确保电脑上已经安装了 Java。官方仓库
第二步:拷贝BFG到仓库目录
将bfg.jar拷贝到仓库的外层目录下。如仓库目录是 git/project1 那么就拷贝到git目录下。
第三步:执行清理命令
提示:执行清理前建议先把整个库备份一份,防止意外!!!
每次命令都会生成日志,放在跟 your-repo.git 仓库平级的 your-repo.git.bfg-report 目录下,有个 deleted-files.txt 可以清晰的看到哪些文件被删除了。
清理所有超过 10M 的文件:
java -jar bfg.jar --strip-blobs-bigger-than 10M project1
清理前 100 大的文件:
java -jar bfg.jar --strip-biggest-blobs 100 project1
清理某个目录
java -jar bfg.jar --delete-folders test project1
清理某个类型的文件
java -jar bfg.jar --delete-files "node.exe" project1
BFG默认不会修改分支上的提交,如果你不想在任何分支中看到这个文件的话,可以这么写
java -jar bfg.jar --delete-files "node.exe" --no-blob-protection project1
第四步:更新 Git 历史
确定第三步想要清理的命令都执行完了,运行下面的命令对仓库历史进行改写。
windows下可以分步执行两个命令
git reflog expire --expire=now --all && git gc --prune=now --aggressive
第五步:强制提交到远程仓库
git push --force
注意:这个时候,远程仓库的历史才被真正改写了,重新 clone 之后,将获得瘦身后的仓库。所有协作者删除本地旧仓库,重新 clone 新仓库,防止一不小心又把本地旧仓库 push 上去!!!
评论区