【gitlab】利用bfg清理git仓库的无用大文件
下载代码
git clone --mirror http://10.168.1.121:8888/davidzheng/david-admin
进入下载的目录,并且查看当前仓库大小,并且筛选出大文件
cd david-admin.git
# 查看仓库大小
git count-objects -vH
# 筛选出大文件
git rev-list --objects --all | grep "$(git verify-pack -v ./objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
删除大文件,这里比如是:resources.pak、icudtl.dat、app.asar
# 在david-admin.git同级目录,然后执行删除
java -jar E:/bfg-1.14.0.jar --delete-files resources.pak david-admin.git
java -jar E:/bfg-1.14.0.jar --delete-files icudtl.dat david-admin.git
java -jar E:/bfg-1.14.0.jar --delete-files app.asar david-admin.git
最后再进入当前项目目录,压缩并推送到新项目地址
# 压缩代码,并清空git reflog日志
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
# 新的url
git push --mirror http://10.168.1.121:8888/device/david-new-admin
如果 --mirror推送不成功,可以使用下面命令
# 关闭gitlab受保护的分支功能。
git clone --bare https://github.com/qq986945193/old-repository.git
cd old-repository
git push --mirror https://github.com/qq986945193/new-repository.git
参考地址
https://gggggravel.com/post/%E4%BD%BF%E7%94%A8bfg%E7%BB%99git%E4%BB%93%E5%BA%93%E7%98%A6%E8%BA%AB/