iOS:给Git仓库上传代码时,超过100M会被拒绝(例如github和oschina)

简介:

处理GitHub不允许上传大于100M文件问题?本人也遇到这个坑。。。

来自转载,原文链接:http://www.cnblogs.com/qmmq/p/4604862.html

 

1、报错:

自己的项目的版本控制用的是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。
复制代码

 

2、原因:

意思是有大文件,更多信息可到http://git.io/iEPt8g查看,文件libbaiduNaviSDK.a的大小超过了GitHub限制的100M大小。想要push,必须把这个文件移除,可是要怎么移除呢?开始我是想着直接删除掉libbaiduNaviSDK.a,结果不行,还是会报上面的错,于是我又把libbaiduNaviSDK.a放到忽略文件里,结果还是不行,还是说有大文件,报同样的错。这下只能老老实实的看官方的解决办法了,于是就打开http://git.io/iEPt8g老老实实的研究了一番。大意是说为了便于管理代码库和方便合作伙伴们使用,当你push50M以上的文件时github将会警告,当push100M以上文件,就直接拒绝你的push,要想push必须把该文件从本地仓库和远程仓库全部移除掉。这个移除会永久性的从本地git和github里移除,如果这个文件很重要,要记得做一次备份。

 

3、解决办法:

下面进入具体操作,如果这个文件是最近一次commit的,并且你还没有push到github

(1)那么第一步输入命令 cd /Users/Dora/Desktop/XXX(cd后面的这个路径要换成你自己项目的路径)

(2)然后第二步输入命令 git rm --cached /Users/Dora/Desktop/XXX/XXX/libbaiduNaviSDK.a(加下划线部分是你自己的要移除的文件的路径)

(3)第三步输入命令 git commit --amend -CHEAD,执行完这步后,这个大文件将会从你的commit记录里移除,并且以后commit都将不会再把它commit了,这时候就可以git push把本地代码push到github上了。

 

4、注意:

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

 

5、仍然报错的解决办法:

如果做了这几步你push的时候还是报和开始的时候一样的错,那说明这个文件你不是最近一次commit时添加的,而是在之前commit过很多次了,这就需要把关于这个文件的所有历史commit记录全部清除掉,这时候我们就需要用到一个叫BFG的工具。我们要到https://rtyley.github.io/bfg-repo-cleaner/#download这个网站去下载并学习如何使用这个工具,使用如下:

(1)首先先得把这个软件下载下来,双击它,如果你的电脑没有java的SDK,按照提示安装好,否则BFG将运行不了。

(2)好了之后,我们要cd进BFG文件所在目录,然后操作如下:

  • 第一步:输入命令java -jar bfg.jar --no-blob-protection --strip-blobs-bigger-than 50M my-repo.git 
  • 第二步:cd my-repo.git 
  • 第三步:git reflog expire --expire=now --all && git gc --prune=now --aggressive
  • 第四步:git push到此大功告成。你的commit历史里所有大于50M的文件的commit全部被清除,这样你就可以push到github上了。
  • 注释:红色部分是你下载下来的文件的名字,蓝色部分是你需要移除的文件大小,橙色部分是你自己.git文件的路径

 

6、继续注意:

这里可能遇到输入命令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命令。对于不熟悉命令行的人来说最容易犯这些错误了。

 

 

 

 

 

 

 

 
 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/6141603.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
27天前
|
对象存储
一个通过 GitHub Action 将 GitHub 仓库与阿里云 OSS 完全同步的脚本
一种将 GitHub 仓库完全同步到阿里云 OSS 的方法。
|
1月前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
3月前
|
存储 安全 API
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
|
2月前
|
Shell 网络安全 开发工具
fatal: unable to access 'https://github.com/wolfcw/libfaketime.git/': Encountered end of file
fatal: unable to access 'https://github.com/wolfcw/libfaketime.git/': Encountered end of file
|
3月前
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
75 0
Github代码仓库SSH配置流程
|
3月前
|
网络协议 Shell 网络安全
开发工具使用之 github 私人仓库Clone 失败的问题
这篇文章介绍了解决GitHub上私人仓库克隆失败的问题,通过检查本地SSH key的存在与否、生成新的SSH key、添加SSH key到GitHub以及使用SSH方式克隆私有仓库的步骤来解决这个问题。
开发工具使用之 github 私人仓库Clone 失败的问题
|
3月前
|
存储 前端开发 数据可视化
一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?
这篇文章详细介绍了如何在GitHub上创建新仓库,以及如何将多个项目整合到一个仓库中进行管理。文章还提供了克隆仓库到本地、使用不同文件夹存放不同项目代码、以及将这些项目提交到远程服务器的步骤和方法。
一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?
怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
这篇文章是一份详细的GitHub使用教程,介绍了如何在GitHub上创建仓库、创建分支、编辑和发布更改内容、发起拉取请求以及合并分支的操作步骤。
怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
|
3月前
|
存储 API 网络架构
GitHub——通过接口获取仓库下的最新版本
GitHub——通过接口获取仓库下的最新版本
32 1