0


git仓库体积过大,如何减小?git仓库体积压缩,使用git-filter-repo删除历史大文件

概述

如果我们在使用的过程中不小心将较大的二进制文件加入到仓库中,那么随着我们提交次数的增多仓库的体积将会不断的膨胀,例如我在项目中每次都会编译出一些so库文件,但是我并没有忽略这些文件,每次都会提交,随着时间的推移仓库体积不断膨胀,将不能再推送到远程仓库中

我使用的是gitee远程仓库,由于仓库体积的不断膨胀,超出了最大限制,推送失败
在这里插入图片描述

1. 安装git-filter-repo

官方库地址和安装说明

  • 手动安装 我们把git-filter-repo克隆岛=到本地,然后把git-filter-repo文件复制到/usr/local/bin 目录下即可,git-filter-repo实际上就是一个python文件git-filter-repo.py在这里插入图片描述
  • 通过pip安装
pip install git-filter-repo

2.列出仓库中的大文件

git rev-list --objects --all |grep -E `git verify-pack -v .git/objects/pack/*.idx |sort -k 3 -n |tail -10 |awk'{print$1}'|sed':a;N;$!ba;s/\n/|/g'`

或者

git rev-list --objects --all |grep"$(git verify-pack -v .git/objects/pack/*.idx |sort -k 3 -n |tail -15 |awk'{print$1}')"

3.强制彻底删除历史大文件

注意: 删除之前一定要先备份仓库
badfile是文件路径,比如 output/lib/a1.so

git filter-repo --path  badfile --invert-paths --force

也可以批量删除

git filter-repo --path  output/lib/*.so --invert-paths --force

批量删除某个文件的所有提交历史

git filter-repo --path  output/lib/liba.so* --invert-paths --force

删除目录 output/lib/service

git filter-repo --path  output/lib/service --invert-paths --force

删除完后filter-repo会自动执行git gc功能,不需要我们手动执行
在这里插入图片描述

4.强制推送到远端

git push -f origin master

5.额外说明

删除之后最好把一些二进制文件添加到.gitignore中不再提交,不然仓库还会不断增大

推送的过程中由于库太大推送到远端失败处理方式

HTTP 413 curl 22 The requested URL returned error: 413
在这里插入图片描述
可以尝试设置http buffer来解决

git config http.postBuffer 524288000

解决不了的话需要改成ssh的方式推送
查看当前的远端仓库地址设置

git remote -v

在这里插入图片描述
可以看到当前使用的是http地址,设置成ssh地址

git remote set-url origin ssh地址

ssh地址可以在gitee上查看
在这里插入图片描述

6.参考文章

仓库体积过大,如何减小(filter-branch方式)
仓库体积过大,如何减小?
用 git filter-repo 彻底删除Git中的大文件
git-filter-repo仓库地址

标签: git github

本文转载自: https://blog.csdn.net/gmq_syy/article/details/129876180
版权归原作者 小熊@XiaoXiong 所有, 如有侵权,请联系我们删除。

“git仓库体积过大,如何减小?git仓库体积压缩,使用git-filter-repo删除历史大文件”的评论:

还没有评论