**
Android studio4.1.1 git上传码云gitee 仓库容量受限最终解决办法
**
今年码云gitee全面升级为基于 C++ 编写,使用了 Git 环境隔离等高级特定GNK (Gitee Native Hook),意味着以前上传大于码云gitee 规定仓库容量的项目,将会直接拒绝上传了(Android studio 只报错Push to ccdream/master was rejected,坑爹有木有),而且最坑爹是如果你仓库容量大于规定容量去提交,超过了3次,则需要联系官方团队重置重试次数(官方技术交流QQ群:1050025484,另外付费用户建议直接电话联系,反映速度绝对快,售前及售后使用咨询:400-606-0201)
首先不废话了,我们先分析出现爆仓库原因;以下截图码云官方解释
看了上述解释,我这边把上面翻译一下就是,git不是网盘,代码无关的文件请绕道走,爷不伺候了(不过据官方文档解释,已经上传的仓库,可以直接保留);
so ~~1、 我们开始第一步,输入git上传忽略文件(大神请直接跳过,这步针对于小白)!
当然有朋友可能说Version Control 下的Ignored Files。这个真不好意思,最新Android studio 4.1.1 已经取消了;
2、第二步,开始对已有的git历史仓库进行瘦身;有两种方法打开git bash;
1.1、找到你的项目根文件,右键git bash;
或打开Android studio ,下方打开Terminal,直接操作即可(需要git 设置win全局变量,这个请自行百度);
1.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}')"
运行后如下图:
1.3、根据如上显示的大文件;开始清除所有历史版本的大文件;
可直接清除文件 ,注意"pom.xml"是文件名称
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch pom.xml' --prune-empty --tag-name-filter cat -- --all
可直接删除文件夹,注意"config/"是文件夹
git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch config/' --prune-empty --tag-name-filter cat -- --all
如上图所示,我这边图片较大且多,直接运行删除图片;
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch app/src/main/res/mipmap-hdpi/*.png' --prune-empty --tag-name-filter cat -- --all
运行成功:如下图
3、提交修改至gitee 仓库;(注意,如果你的仓库修改后还是超过最大限制,会被拒绝的)
git push -u origin master -f
提交成功后如下图:
如果超过gitee规定库存则如下显示
4、提交删除回收缓存(注意这一步才是真正意义上的删除)
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
运行成功后如下:
在此,如果你的库存容量是在指定范围内;那就可以去Android studio愉快的push了;如果你也和我一样;删除大文件后,剩下的代码数量还是超过了指定gitee容量;那就请接着看;
1、财主请直接升级付费版本,绝对不差;下图仅供参考,不是广告,想升级的请移步gitee官网;
2、像我这种没钱的,只能再创建gitee新仓库,接收多出的容量(注意免费版本,总仓库5G,做好仓库管控才是省钱之道);
直接新建gitee仓库(这个不多说了,此处略):
新建好了之后,复制ssh地址(有些是https push,也是一样的);
打开Android studio,git 》》Repository》》Remotes 更换当前gitee远程仓库上传地址
打开后Remotes,可以直接编辑,删除或添加上传地址;我这边只是演示,所以直接添加了;最后,点击0k完成;如下图显示:
剩下的就不罗嗦了;和其它博客说第一次上传gitee的差不多;请看图:
选择新仓库地址
拉取新仓库文件
如果pull失败了,会报提示:fatal: refusing to merge unrelated histories ,则通过命令行git pull origin master --allow-unrelated-histories来实现新仓库第一次拉取
拉取成功后如下图
因为是老git本地仓库上传新git远程码云仓库,不用想;README。md文件肯定有冲突;所以我们在此直接到位,调解冲突,剩下的不会使用的请跳转https://blog.csdn.net/chuyouyinghe/article/details/78478178;
剩下的就是愉快的push到新仓库吧
打完收工,最后感谢以下大神博客;
参考博客:
https://blog.csdn.net/chuyouyinghe/article/details/78478178;
https://www.cnblogs.com/hbolin/p/11340284.html;
https://my.oschina.net/GIIoOS/blog/3126211;
https://blog.csdn.net/Android_qinglong/article/details/71083453?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduend~default-1-71083453.nonecase&utm_term=android%20%E6%9C%AC%E5%9C%B0%E9%A1%B9%E7%9B%AE%E6%8B%89%E5%88%B0%E7%A0%81%E4%BA%91&spm=1000.2123.3001.4430;