如何在超过100 MB时将项目上传到Github?

时间:2015-12-29 23:27:49

标签: github

我使用的是130MB的GoogleMaps pod,所以github不允许我上传我的项目。解决方法是什么?

enter image description here

5 个答案:

答案 0 :(得分:5)

我建议在您的git存储库中排除Pods目录(通过将其添加到.gitignore文件中)。可以使用podfile重新创建Pod,因此您不必将它们存储在存储库中。

其他方法,例如当你有自己预编译的框架并且不希望你的其他团队成员需要再次编译它时,就是使用git lfs:https://git-lfs.github.com

答案 1 :(得分:1)

如果Google Maps SDK 依赖使您的项目规模非常大,最好将其添加到.gitignore而不是保留整个项目的副本,无论是否使用LFS或其他任何机制。

由于您的项目使用Swift,当Xcode支持Swift Package Manager(SPM)时,您将能够在标记或分支的基础上将Maps SDK指定为Package.swift中的依赖项。然后swift build(或Xcode等价物)将管理这些类型的项目依赖项的依赖项克隆,更新和构建。

答案 2 :(得分:1)

作为临时解决方案,您可以使用一堆脚本 如描述in the post here

  1. 拆分文件
  2.    post_install do |installer_representation|
            puts "Splitting up Gooogle Framework - It's just too big to be presented in the Github :("
            Dir.chdir("Pods/GoogleMaps/Frameworks/GoogleMaps.framework/Versions/Current") do
               # Remove previous split files if any
               `rm GoogleMaps_Split_*`
               # Split current framework into smaller parts
               `split -b 30m GoogleMaps GoogleMaps_Split_`
            end
        end
    
    1. 将文件添加到.gitignore
    2.     # Google Maps is too big to be handled by one file, so this one is generated on build phase from smaller pieces
          OurProject/Pods/GoogleMaps/Frameworks/GoogleMaps.framework/Versions/A/GoogleMaps
      
      1. 在构建步骤
      2. 上合并来自块的文件
        # Github doesn't support files bigger than 100M.
        # Latest checked GoogleMaps Framework ~ 114M
        # We're expecting to have GoogleMaps Framework as a one file or as a number of chunks
        
        BINARY_FILENAME=GoogleMaps
        SPLIT_FILENAME_PREFIX=${BINARY_FILENAME}_Split
        GMAPS_FRAMEWORK_DIR=Pods/GoogleMaps/Frameworks/GoogleMaps.framework/Versions/Current
        GMAPS_FRAMEWORK_FILE=$GMAPS_FRAMEWORK_DIR/$BINARY_FILENAME
        
        # Check if we  have Google Maps Framework
        if [ ! -f ${GMAPS_FRAMEWORK_FILE} ]; then
            echo "There's no Google Maps framework at ${GMAPS_FRAMEWORK_FILE}"
            cd ${GMAPS_FRAMEWORK_DIR}
            #  But we have chunks! ...Probably
            if [ -f ${SPLIT_FILENAME_PREFIX}_aa ]; then
               echo "Creating file from smaller files with ${SPLIT_FILENAME_PREFIX} prefix"
               cat ${SPLIT_FILENAME_PREFIX}_* > ${BINARY_FILENAME}
            fi
        fi

答案 3 :(得分:0)

GitHub上的文件不能超过100MB,最多不超过1GB,除非您使用LFS - https://help.github.com/articles/what-is-my-disk-quota/

将整个目录推送到GitHub似乎不正确。查看文档或查看包含GoogleDirections binding的此the necessary json示例。

答案 4 :(得分:0)

根据Github的磁盘quota page个别文件只有100MB的严格限制。还有一个建议的1GB存储库限制。

如果您使用的是非常大的文件,我建议您阅读此页here,其中将详细介绍您应该执行的操作。值得注意的是,如果你绝对需要推送一个大文件,他们会推荐使用Git Large File Storage。

  

提示:如果您经常将大文件推送到GitHub,请考虑将Git大文件存储(Git LFS)作为工作流程的一部分。 Git LFS适用于GitHub Flow,可以与任何大文件一起使用,无论其类型如何。有关详细信息,请参阅" Versioning large files。"

但是,在这种情况下,看起来你应该创建一个submodule或使用.gitignore来从存储库中删除框架。