美文网首页
记一次git推送代码仓库体积过大问题

记一次git推送代码仓库体积过大问题

作者: 逆水寒Stephen | 来源:发表于2023-08-03 18:14 被阅读0次

    问题截图:


    问题截图

    从图中可以看出本地提交的仓库是4.18个GB,但是gitee限制是3GB,所以提交被拒绝了,然后给了个文档地址:https://gitee.com/help/articles/4232,点进去可以看到,企业尊享版最大限制是3个GB,我们本来就是企业版,这个意味钞能力无法解决了,另寻他法,按他文档里面的其他命令行方法试了,效果不佳,后找到两篇文章https://www.rstk.cn/news/100168.html?action=onClickhttps://blog.csdn.net/Forever_wj/article/details/123828382,一通折腾下,提交的内容还更大了点,😭,命令如下,也许你有帮助:

    1.pip install git-filter-repo
    2.cd 进入项目根目录
    3.查找大文件(参数里面100代表查找出最大的100个文件和对应Commit信息)
    git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -100 | awk '{print$1}')"
    4.根据找到的大文件执行强制彻底删除历史大文件(比如我看到是app和appExternal的release里面的aar比较多)
    git filter-branch --force --prune-empty --index-filter "git rm -rf  app/release/*.aar appExternal/release/*.aar --cached --ignore-unmatch" --tag-name-filter cat -- --all
    5.上面执行重写commit完成后强制推送到远端
    git push origin master -f
    6.如果执行时报refs/original/已经存在,先执行:rm -rf .git/refs/original/
    7.最新彻底清除
    rm -rf .git/refs/original/
    git reflog expire --expire=now --all
    git gc --prune=now
    

    上面方法对我失效后我想直接删除之前的commit,这样就不会存在超限了吧,于是找到这个文章https://zhuanlan.zhihu.com/p/347385535,执行了下面这些命令,一通折腾下,提交的内容还是大了点,😭,命令如下,也许你有帮助:

    1.创建孤立分支,并切换到该分支:
    git checkout --orphan latest_branch
    2. 暂存所有文件:
    git add -A
    3. 提交所有更改:
    git commit -am "First Commit"
    4. 删除主分支 master:
    git branch -D master
    5. 重命名当前分支为 master:
    git branch -m master
    6. 强制推送本地分支:
    git push origin master -f
    

    最后实在无语了,猜想应该是gitee上面的commit超限了,因为我重新拉个新的下来马上提交都提示超限,所以只能采取终极办法:
    1.将项目在gitee网站去download一个源码zip下来
    2.在gitee网站上将项目重命名备个份就暂时废弃这个项目
    3.新建一个和之前同名的项目,这样保证同事间/jenkins这些不需要改url
    4.将down下来的源码zip,解压后重置执行git相关命令推送到新地址上:

    git init
    git remote add origin https://gitee.com/xxxxx.git
    git add .
    git commit -m "xxx"
    git push origin master
    

    相关文章

      网友评论

          本文标题:记一次git推送代码仓库体积过大问题

          本文链接:https://www.haomeiwen.com/subject/dpvmpdtx.html