美文网首页
记录一次git提交遇到的问题<commit的文件大于100

记录一次git提交遇到的问题<commit的文件大于100

作者: Pusswzy | 来源:发表于2018-01-16 13:34 被阅读198次

    项目集成谷歌的VR SDK后, 提交到github的时候发现报错

    The push operation includes a file which exceeds GitHub’s file size restriction of 100MB. Please remove the file from history and try again.

    谷歌了一番, 有以下两个解决方案:

    方案一

    这个方案适用于仅最近的一次提交包含大于100MB的文件, 解决起来也比较简单.
    官网解决流程

    git rm --cached giant_file
    # Stage our giant file for removal, but leave it on disk
    
    git commit --amend -CHEAD
    # Amend the previous commit with your change
    # Simply making a new commit won't work, as you need
    # to remove the file from the unpushed history as well
    
    git push
    # Push our rewritten, smaller commit
    

    方案二

    这个方案适用于多次的commit已经包含大于100MB的文件, 所以需要对之前的dirty commits进行处理, 这里官网就推荐使用BFG.

    • 下载BFG
    # Open Terminal using Spotlight search by pressing <command+space>. Type terminal and hit Enter key.
    # Now, Execute
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
    
    # Install bfg using brew
    # 执行这句的时候可能会提示需要Java环境, 按照提示下载Java环境后在执行brew install bfg即可
    brew install bfg
    
    • 使用BFG
    # <bfg.jar>指的是你下载bfg.jar的路径
    # <.git>指的是你仓库的路径
    java -jar <bfg.jar> --no-blob-protection  --strip-blobs-bigger-than 50M <.git>
    
    # example: java -jar /Users/Li/Desktop/bfg/bfg-1.12.16.jar --no-blob-protection  --strip-blobs-bigger-than 50M /Users/Li/Desktop/iOS 
    
    # 找到大文件后再输入
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
    #then
    git push origin master
    
    succees!
    

    相关文章

      网友评论

          本文标题:记录一次git提交遇到的问题<commit的文件大于100

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