美文网首页
iOS source tree提交代码,提示 File &qu

iOS source tree提交代码,提示 File &qu

作者: CoderZb | 来源:发表于2018-12-16 20:07 被阅读10次
    如下截图左侧的1↑表示:在本地服务器有1个提交记录,但是提交到远程服务器的时候报了标号4中的错误
    image.png
    在如上截图的基础上,又提交了一次记录,左侧的2↑表示:在本地服务器有2个提交记录,但是提交到远程服务器的时候还是报了上面的错误。
    image.png
    报错内容粘贴

    Pushing to https://gitee.com/yimiaozp/newasecondjobproject.git
    POST git-receive-pack (chunked)
    remote: Powered By �[01;34mGitee.com�[0m
    remote: warning: Large files detected.
    remote: error: File "Hema/HemaFrameworks/\351\253\230\345\276\267\345\234\260\345\233\276/AMapNaviKit.framework/AMapNaviKit" is 109.32 MB; this exceeds file size limit of 100.0 MB
    remote: error: hook declined to update refs/heads/2.3.8
    To https://gitee.com/yimiaozp/newasecondjobproject.git
    ! [remote rejected] 2.3.8 -> 2.3.8 (hook declined)
    error: failed to push some refs to 'https://gitee.com/yimiaozp/newasecondjobproject.git'

    出现问题原因:AMapNaviKit.framework/AMapNaviKit文件大于100MB。

    解决办法:首先可以断定的是,你的代码100%肯定提交到本地服务器了,因为如上报错是远程服务器报给用户的错误,而提交到远程服务器之前,必须先提交到本地服务器。按照如下四个步骤即可完美解决上述问题。


    步骤一:删除高德导航framework

    image.png

    步骤二:source tree再次提交一次本次的更改。肯定还是报上面的错误,我们不必在意。另外左侧变成了的3↑,表示在本地服务器有3个提交记录,但是提交到远程服务器的时候报了错误。

    image.png

    步骤三:进入项目目录,我们项目是在new下面

    cd /Users/zhangbin/Desktop/一秒招聘/new
    
    image.png

    步骤四:紧接着执行如下命令。若执行该命令之后有问题,请滚动到底部看看可能出现的问题。格外注意一点:报错的内容识别不出来汉字(高德地图),所以报错的内容高德地图字转成了字符(\351\253\230\345\276\267\345\234\260\345\233\276),但我们执行步骤三的时候,一定要使用的汉字(高德地图),否则的话,还是报最上面截图的问题,因为路径都不对,怎么可能会将导航framework删掉。在这里提醒一下:路径中最好不要有中文,不规范。

    git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch Hema/HemaFrameworks/高德地图/AMapNaviKit.framework/AMapNaviKit' HEAD
    
    image.png

    另外命令中的内容:Hema/HemaFrameworks/高德地图/AMapNaviKit.framework/AMapNaviKit就是从第一张截图里面粘贴过来的,就是这个文件大于100MB。


    步骤五:终端进行git push(或者利用source tree),将代码提交到远程仓库。这样3次提交记录中,除了导航的framework不会提交到远程服务器,其余更改的内容都会被提交到远程服务器。

    image.png

    可能出现的问题1[我遇到过]:

    • 如果执行步骤三提示如下错误
    Cannot create a new backup.
    A previous backup already exists in refs/original/
    Force overwriting the backup with -f
    

    ,那么执行这个命令即可rm -rf .git/refs/original/,之后,步骤回滚到步骤三,继续执行步骤三。

    可能出现的问题2[我遇到过]:

    导航framework大于100M所在的路径中有中文,所以当执行步骤三的时候一定要格外注意,该文件对应的路径有中文的话,一定要使用中文,这种情况,不要完全按照报错的路径来

    写在后面

    因为单个文件大于100MB,导致整个项目无法上传到远程服务器的问题,我暂时是按照如上步骤解决的。这样代码虽然能提交上去,但是项目文件内容肯定会报错,因为项目里面使用了高德导航功能,所有头文件找不到的错误肯定会找上门来的。所以每次从远程服务器成功拉取代码之后,还要手动把高德导航framework拉进项目中,保证项目的正常运行不报错。当再次提交代码的时候,再把高德导航framework删掉。虽然每次提交代码都会麻烦一些,但是这何尝不是一种方法呢。

    相关文章

      网友评论

          本文标题:iOS source tree提交代码,提示 File &qu

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