git 清理commit中历史提交记录的大文件
起源是公司需要把代码仓库同步到另外一个代码仓库,结果另外一个仓库被限制大文件超过64M提交,所以会同步失败。
刚开始我直接把大文件压缩到64m以内,结果还是同步失败。后来才知道是因为提交记录里面有包含大文件的信息也要删除才行。
具体操作方法:
将程序包放到一个文件夹里,为了方便,重命名为bfg.jar
3. 克隆仓库
git clone --mirror ssh://[email protected]:34/xxx/xxx.git
- 清理大文件,文件夹,隐私文件
知道大文件的名字是最好的,如果不知道也可以通过命令找到文件。详情看文末的参考2链接,里面有详细介绍。
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
java -jar bfg.jar --delete-files 我是单个文件名字 hcses-warehouse.git --no-blob-protection
java -jar bfg.jar --delete-folders 我是文件夹的名字 hcses-warehouse.git --no-blob-protection
java -jar bfg.jar --delete-files ys.mp4 xxx.git --no-blob-protection
java -jar bfg.jar --delete-files ys.zip xxx.git --no-blob-protection
- 清理不需要的数据
在完成上面的指令后,实际上这些数据/文件并没有被直接删除,这时候需要使用git gc指令来清除。
cd xxx.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
- 推送到Git仓库
普通推送可能也会报错,我们可以使用强制推送。
git push
git push --force
标签:文件,git,bfg,--,清理,jar,commit,xxx
From: https://www.cnblogs.com/abspace/p/17410990.html