处理GitHub不容许上传大于100M文件问题

一样是记录一下本身工做遇到的问题,省得下次再遇到了还处处网上查资料解决。java

本身的项目的版本控制用的是Git,代码仓库在github托管。项目里用到了百度导航SDK,因为百度导航SDK有了新版本,因而就更新到了新版本,更新好了以后想把代码push到github上,结果出错了,被拒绝,具体信息是:Total 3007 (delta 664), reused 0 (delta 0)
remote: error: GH001: Large files detected.
remote: error: Trace: 7b7de6b9372ee392e0f3961b05ea6f33
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File  XXX/XXX/BaiduNaviSDK/libbaiduNaviSDK.a is 102.68 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/XXX/XXXX.git。意思是有大文件,更多信息可到http://git.io/iEPt8g查看,文件libbaiduNaviSDK.a的大小超过了GitHub限制的100M大小。想要push,必须把这个文件移除,但是要怎么移除呢?开始我是想着直接删除掉libbaiduNaviSDK.a,结果不行,仍是会报上面的错,因而我又把libbaiduNaviSDK.a放到忽略文件里,结果仍是不行,仍是说有大文件,报一样的错。这下只能老老实实的看官方的解决办法了,因而就打开http://git.io/iEPt8g老老实实的研究了一番。大意是说为了便于管理代码库和方便合做伙伴们使用,当你push50M以上的文件时github将会警告,当push100M以上文件,就直接拒绝你的push,要想push必须把该文件从本地仓库和远程仓库所有移除掉。这个移除会永久性的从本地git和github里移除,若是这个文件很重要,要记得作一次备份。下面进入具体操做。若是这个文件是最近一次commit的,而且你尚未push到github,那么第一步输入命令 cd /Users/Dora/Desktop/XXX(cd后面的这个路径要换成你本身项目的路径),而后第二步输入命令 git rm --cached /Users/Dora/Desktop/XXX/XXX/libbaiduNaviSDK.a(加下划线部分是你本身的要移除的文件的路径),第三步输入命令 git commit --amend -CHEAD,执行完这步后,这个大文件将会从你的commit记录里移除,而且之后commit都将不会再把它commit了,这时候就能够git push把本地代码push到github上了。git

注意:这里可能遇到输入git rm --cached /Users/Dora/Desktop/XXX/XXX/libbaiduNaviSDK.a命令后说找不到你要删除的文件的问题,出现这个问题的缘由是你要删除的文件路径名没写对,必定要仔细检查,确保要删除的文件的路径是正确的。github

若是作了这几步你push的时候仍是报和开始的时候同样的错,那说明这个文件你不是最近一次commit时添加的,而是在以前commit过不少次了,这就须要把关于这个文件的全部历史commit记录所有清除掉,这时候咱们就须要用到一个叫BFG的工具。咱们要到https://rtyley.github.io/bfg-repo-cleaner/#download这个网站去下载并学习如何使用这个工具。首先先得把这个软件下载下来,双击它,若是你的电脑没有java的SDK,按照提示安装好,不然BFG将运行不了。好了以后,咱们要cd进BFG文件所在目录,第一步输入命令java -jar bfg.jar --no-blob-protection --strip-blobs-bigger-than 50M my-repo.git(红色部分是你下载下来的文件的名字,蓝色部分是你须要移除的文件大小,橙色部分是你本身.git文件的路径),第二步cd my-repo.git ,第三步 git reflog expire --expire=now --all && git gc --prune=now --aggressive,第四步git push,到此大功告成。你的commit历史里全部大于50M的文件的commit所有被清除,这样你就能够push到github上了。这里只是记录了怎么处理遇到的问题,若是想要知道原理,则须要好好好去学习学习。工具

注意:这里可能遇到输入命令java -jar bfg.jar --strip-blobs-bigger-than 50M my-repo.git后bfg运行不成功的问题,缘由是java -jar bfg.jar这个命令必需要在bfg.jar所在目录下运行才行,不然系统将不知道bfg.jar文件在哪里,因此执行不成功。因此咱们要先cd到bfg.jar所在目录,而后在执行ava -jar bfg.jar --strip-blobs-bigger-than 50M my-repo.git命令。对于不熟悉命令行的人来讲最容易犯这些错误了。学习

相关文章
相关标签/搜索