最近在项目提交分支到github的时候, 出现了一件很尴尬的事情, 文件超过100m, 被github拒绝了
宝宝心里苦, 但宝宝不说
当时也没太在意, 但是当我的当前分支提交堆积到12次的时候, 我急了
卧槽, 要是我以后都不能提交, 那得多尴尬啊
谁叫我有轻微强迫症呢
自己搞不定, 那百度啊
然后, 我百度了一圈, 更换各种搜索词, 从百度的搜索结果的第一页看到第四页, 玛德终于解决了
所以我响应祖国的号召, 坚持每年3.15打击假冒伪劣的思想, 向大家告知一下, 下面的方法 都!!!! 是!!!!! 不!!!!! 对!!!!! 的!!!!!
在这里可能有人要说了, 卧槽你整些不对的跟我说干嘛
没事, 我开心, 结尾也有正确的答案, 不想看过程直接看结果的跳到最后就好
坑爹的jar包
首先引用一下前辈的话
如果做了这几步你push的时候还是报和开始的时候一样的错,那说明这个文件你不是最近一次commit时添加的,而是在之前commit过很多次了,这就需要把关于这个文件的所有历史commit记录全部清除掉,这时候我们就需要用到一个叫BFG的工具。我们要到https://rtyley.github.io/bfg-repo-cleaner/#download这个网站去下载并学习如何使用这个工具。 —— [ 来自某位不知名的大佬 ]
我去尝试下下来这个文档, 卧槽原来是一个jar包, 瞬间觉得高大上了
前辈, 您是想要我学习一下java的运行原理么?
嗯~ jar包, 可以的, 跟着前辈指示的指令一波操作
结果: 指令没卵用
使用git-lfs
其实这个方法也是可行的, 因为git是专门提供了一个工具来给我们存储大容量文件的, 就是Git Large File Storage
大家有兴趣可以百度或者google一下
但问题是, 搞这个玩意儿又要下另一个版本的git, 神烦, 故跳转到下一百度词条了, 毕竟以后很少用到, 学习成本太高
这里也一样, 贴上前辈的文章链接, 有兴趣的可以学习一下
修正错误?
还有某前辈建议这样做
第一步输入命令 cd /Users/Dora/Desktop/XXX(cd后面的这个路径要换成你自己项目的路径),然后第二步输入命令 git rm –cached /Users/Dora/Desktop/XXX/XXX/IJKMediaFramework(加下划线部分是你自己的要移除的文件的路径),第三步输入命令 git commit –amend -CHEAD,执行完这步后,这个大文件将会从你的commit记录里移除,并且以后commit都将不会再把它commit了,这时候就可以git push把本地代码push到github上了。
—— [ Github 修正上传时“this exceeds GitHub’s file size limit of 100 MB”错误 ]
似乎~ 还是不行
正确的做法
其实就代码来说, 很简单
注意一点就是, 记得在你当前本地仓库的根目录下打开git bash 否则是无效的, 别问我怎么知道的, 蓝瘦香菇
代码就只有三行, 复制粘贴就好了
1 | git filter-branch --force --index-filter "git rm --cached --ignore-unmatch ***" --prune-empty --tag-name-filter cat -- --all |
代码第一行中的三个*, 将它换为你之前不要提交的文件的相对路径, 然后会看到一堆的代码校验, 最后会在分支中删除掉你提交这个大文件的记录
那么最后使用git push就可以提交了, 全部搞定, 大吉大利, 今晚吃鸡
(完)