美文网首页
git核武器解决超大文件修改提交被拒

git核武器解决超大文件修改提交被拒

作者: 4VZhang | 来源:发表于2018-11-14 11:33 被阅读48次

    提交本地修改被拒---被拒原文如下:

    git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v origin dev:dev 
    Pushing to https://git.oschina.net/***/jsb_iOS.git
    POST git-receive-pack (chunked)
    remote: Powered by Gitee.com        
    remote: warning: Large files detected.        
    remote: error: File Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/MAMapKit is 137.41 MB; this exceeds file size limit of 100.0 MB        
    remote: error: hook declined to update refs/heads/dev        
    To https://git.oschina.net/***/jsb_iOS.git
     ! [remote rejected] dev -> dev (hook declined)
    error: failed to push some refs to 'https://git.oschina.net/***/jsb_iOS.git'
    Completed with errors, see above
    

    被拒原因分析:本地提交的修改中包含超过100M大小的文件,导致git拒绝提交!

    根据git官网给出的核武器(filter-branch)来解决此问题!同时借鉴前车之鉴

    • --tree-filter 选项在检出项目的每一个提交后运行指定的命令然后重新提交结果

    • --all 为了让 filter-branch 在所有分支上运行,可以给命令传递 --all 选项

    • --prune-empty 表示如果修改后的提交为空则扔掉不要

    • -f 是忽略备份。不加这个选项第二次运行这个命令时会出错,意思是 git 上次做了备份,现在再要运行的话得处理掉上次的备份。

    • HEAD~3..HEAD 从当前提交之前的第3次提交 到当前提交 都执行此命令

    git filter-branch -f  --prune-empty --tree-filter 'rm -f Pods/AMap3DMap-NO-IDFA' HEAD~40..HEAD
    Rewrite bb6be8af9994cca8cceb943cf19d1b065a56319c (38/70) (12 seconds passed, remaining 10 predicted)    rm: Pods/AMap3DMap-NO-IDFA: is a directory
    tree filter failed: rm -f Pods/AMap3DMap-NO-IDFA
    
    
    -f十分重要,因为只能删除文件,而不能删除文件夹; 如果有多个文件需要删除就需要 添加上-f的命令,以免第二次运行这个命令出错!

    建议:检出一个新分支,在新分支上做如下操作;达到自己想要的效果后,再回到主分支上修改!

    //从指定的commit中删除误操作文件的记录
    git filter-branch --tree-filter 'git rm -f --ignore-unmatch {{文件名}}' [commit1..commit2]
    
    //从当前分支的前30次提交开始遍历,删除误操作文件的引用
    git filter-branch --tree-filter 'git rm -f {{文件名}}' HEAD~30..HEAD
    
    

    解决办法:

    打开终端,
    cd到当前项目目录下,
    git filter-branch -f --prune-empty --tree-filter 'rm -f Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/MAMapKit' HEAD~40..HEAD

    执行结果如下:


    执行结果.jpeg

    相关文章

      网友评论

          本文标题:git核武器解决超大文件修改提交被拒

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