Github - 文件XYZ是126.80 MB;这超过了GitHub的文件大小限制为100.00 MB

时间:2015-07-10 20:14:00

标签: github

我有一个本地存储库,意外添加了一个大文件。现在我差不多100个承诺落后了。当我尝试推送到GitHub时,它给了我一个错误。

我需要帮助做我需要做的任何事情才能推动这个存储库的其余部分。

我不需要此文件,可以永久删除

(旁注:这是一个带有IPython节点和代码的目录。我有一个脚本自动推送它,这就是为什么我差不多100次提交。我只是注意到它没有同步&# 39; d)

以下是我没有成功的尝试:

git status
  

在分支主机上   您的分支机构领先于原创/主人。 100次提交。
        (使用" git push"发布您的本地提交)
  无需提交,工作目录清理

git filter-branch --index-filter 'git rm --cached --ignore-unmatch "Education/Coursera/Exploratory Data Analysis/Week1/household_power_consumption.txt"' --tag-name-filter cat -- --all
  

重写d381c7d5037a6a26abb2b5cef06e57d8b86a398b(95/189)rm'教育/课程/探索性数据分析/ Week1 / household_power_consumption.txt'
  ..
  重写f639b57714a5d57ff37b9d4a55c1c69fc0b514a8(176/189)rm'教育/课程/探索性数据分析/ Week1 / household_power_consumption.txt'
  重写587c8b65f19315ebeb6627a75bd703a5dbdec208(189/189)

     

Ref' refs / heads / master'改写了   警告:Ref' refs / remotes / origin / master'没有改变

git rm "Education/Coursera/Exploratory Data Analysis/Week1/household_power_consumption.txt"
  

致命:pathspec'教育/课程/探索性数据分析/ Week1 / household_power_consumption.txt'与任何文件都不匹配

git push
  

警告:push.default未设置;它的隐含价值正在改变Git 2.0中的匹配'简单'。要在默认更改后压制此消息并保持当前行为,请使用:

     

git config --global push.default matching

     

要压制此消息并立即采用新行为,请使用:

     

git config --global push.default simple

     

当push.default设置为'匹配'时,git会将本地分支推送到已存在的同名远程分支。

     

在Git 2.0中,Git将默认为更保守的“简单”。行为,只将当前分支推送到相应的远程分支“git pull'用于更新当前分支。

     

请参阅' git help config'并搜索' push.default'了解更多信息   ('简单'模式是在Git 1.7.11中引入的。使用类似模式'当前'而不是简单'如果你有时使用旧版本的Git)

     

计算物体:841,完成。
  Delta压缩使用最多2个线程。
  压缩对象:100%(578/578),完成。
  书写对象:100%(835/835),31.79 MiB | 3.14 MiB / s,完成。
  总计835(delta 196),重复使用0(delta 0)

     

remote:warning:File .git-rewrite / t / Education / Coursera / Exploratory Data Analysis / Week1 / household_power_consumption.txt是74.92 MB;这大于GitHub推荐的最大文件大小50.00 MB
  remote:警告:文件.git-rewrite / t / Education / Coursera / Exploratory Data Analysis / Week1 / household_power_consumption.txt是69.38 MB;这大于GitHub推荐的最大文件大小50.00 MB

     

remote:错误:GH001:检测到大文件。
  remote:错误:跟踪:f013f5e75b4f35d07de5d2d9ef1116bd
  remote:错误:有关详细信息,请参阅http://git.io/iEPt8g   remote:错误:文件.git-rewrite / t / Education / Coursera / Exploratory Data Analysis / Week1 / household_power_consumption.txt是126.80 MB;这超过了GitHub的文件大小限制为100.00 MB

     

到git@github.com:rbohac / IPython-Notebooks.git   ! [远程拒绝]主人 - >主人(预先接收挂钩拒绝)
  错误:未能将某些引用推送到' git@github.com:rbohac / IPython-Notebooks.git'

3 个答案:

答案 0 :(得分:8)

确保您的最新提交是正确的,因为BFG会假设这一点并使用您的最新提交来在重写和清除Git历史记录时维护您的repo的状态。 BFG类似于'git-filter-branch',但它是为更具体的目的而编写的实用程序,而git实用程序更广泛,功能更多,牺牲了操作效率。阅读有关BFG的文档以获取更多细节,因为我从该源获得了所有这些信息。

brew install bfg
bfg --strip-blobs-bigger-than 50M
git rm --cached XYZ
git commit --amend -CHEAD
git push

BFG将更新您的提交以及所有分支和标记,以便它们干净,但它不会物理删除任何内容。检查repo以确保一切正确,然后清除缓存并运行'git gc'去除Git现在可以识别的不需要的数据,因为它已从历史记录中删除。

此外:

答案 1 :(得分:3)

使用brew install bfg安装后我使用bfg时遇到了麻烦,尽管我通常在使用自制软件时取得了很大的成功。

这对我有用:

  • https://rtyley.github.io/bfg-repo-cleaner/#download

  • 下载最新的bfg
  • 执行这样的bfg,然后输入其余命令@davidcondrey建议

    cd /my/repo
    java -jar ~/Downloads/bfg-1.12.5.jar --strip-blobs-bigger-than 99M
    git rm --cached XYZ
    git commit --amend -CHEAD
    git push 
    

答案 2 :(得分:0)

另一种不使用bfg的解决方案,我使用了此脚本remove-big-file.sh 由Bruno Grande开发。

请在执行前阅读脚本,并了解每个步骤

简要说明:它考虑了一个本地rebase,编辑你包含大文件的提交(从git中删除它不是物理上的)和amend提交并最终推送(这将包括你之后做的任何其他提交)试图解决它。)

我遇到了同样的问题,我的方法如下:我从git中删除了文件,并且还更新了我的.gitignore并提交了这些更改,但仍然遇到了同样的错误。完成脚本的每一步(手动)后,它就解决了,请注意推送将包括你在本地完成的所有提交。