有时候,在项目文件夹中会产生一些特别大的文件,这时候要是没有注意直接提交了,这个文件就会一直存在在项目文件夹中,就算你把文件夹中的文件删除,git还是会在.git中留有备份,以便于回滚,彻底删除会变得很麻烦。
前阵子就在项目中出现了这个事情,也找了一些解决方案,其中提的最多的是用git verify-pack系列操作和重建库。git verify-pack在我的powshell中跑不了,重建库又会丢失之前的记录,所以找了第三种方法,利用BFG第三方工具来解决。
BFG,详情看官网介绍,这里只记录一下操作步骤。
- 准备
- BFG依赖JAVA环境,请先安装JAVA。
- 在官网下载BFG的jar包
git clone --mirror git://example.com/some-big-repo.git或者本地备份项目文件夹
- 操作步骤
- 把BFG复制到项目文件夹中
- 打开powshell 定位到项目文件夹
- 命令
java -jar bfg.jar --strip-blobs-bigger-than 100M把100m以上的文件记录删掉,更新提交记录。 - 命令
git reflog expire --expire=now --all && git gc --prune=now --aggressive把脏数据回收删除
之后就可以用git push 来提交了。