29

自 2013 年 6 月 18 日起,此更改如何影响我的现有存储库,其中包含超过该限制的文件?我上次推送是在 2 个月前用一个大文件。

我有一个已在本地删除的大文件,但现在无法推送任何内容。我收到“远程错误”...远程:错误:文件 cron_log.log 为 126.91 MB;这超出了 GitHub 的 100 MB 文件大小限制

我在原始推送后将文件添加到 .gitignore ......但它仍然存在于远程(原点)

在本地删除它应该在原点(Github)将其删除,对吗?......但是......它不让我推送,因为Github上有一个文件超过了限制......

https://github.com/blog/1533-new-file-size-limits

这些是我发出的命令加上错误消息..

混帐添加。
git commit -m "删除 cron_log.log"
git push 起源大师

远程:错误代码:40bef1f6653fd2410fb2ab40242bc879
远程:警告:错误 GH413:检测到大文件。
远程:警告:有关更多信息,请参阅 http://git.io/iEPt8g。
远程:错误:文件 cron_log.log 为 141.41 MB;这超出了 GitHub 的 100 MB 文件大小限制
远程:错误:文件 cron_log.log 为 126.91 MB;这超出了 GitHub 的 100 MB 文件大小限制

到 https://github.com/slinds(omited_here)/linexxxx(omited_here).git
 ![remote denied] master -> master (pre-receive hook denied)
错误:未能将一些参考推送到“https://github.com/slinds(omited_here)

然后我尝试了类似的东西

git rm cron_log.log
git rm --cached cron_log.log

同样的错误。

4

6 回答 6

26

正如rlb.usa 所指出的,Github 添加了文件大小限制,阻止您推送大于 100MB 的文件。您尝试在新提交中删除该文件并尝试推送该文件。那失败了,因为您不仅要推送最后一个提交,还要推送其他三个提交。这三个提交包含大小为 141MB 和 126MB 的 cron_log 版本。它们会导致您的推送失败。

要解决此问题,您有两种选择:

  • 运行git rebase -i origin/master,设置每个提交编辑和删除每个带有git commit --amend.
  • 使用BFG Repo-Cleaner清理您的所有历史记录。
于 2013-07-02T01:17:05.113 回答
26

嗨,您可以通过这种方式轻松解决:

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch FILENAME.TAR' --prune-empty --tag-name-filter cat -- --all

链接:https ://help.github.com/articles/remove-sensitive-data

于 2013-07-31T10:36:52.603 回答
6

根据 GitHub 几小时前制定的新文件大小限制(也:处理大文件),GitHub 现在有 1GB 文件大小存储库的新政策,超过 50 MB 的文件推送警告和 100MB 文件上传完全拒绝。

当您推送大于 50 MB 的文件时,GitHub 会向您发出警告。我们将拒绝包含大于 100 MB 的文件的推送。我们这样做有几个原因。

你有几个选择,但不是很多:

  • 将 100 MB 以上的文件上传到其他服务并与之共享
  • 减少有问题的文件的文件大小
  • 找到一个新的存储库
于 2013-06-29T22:19:45.960 回答
1

GitHub 上每个文件的实际限制是 100 MiB,而不是 100 MB。

演示:https ://github.com/Franck-Dernoncourt/github-max-file-size


https://help.github.com/articles/what-is-my-disk-quota/ ( mirror ) 错误地声称他们严格限制文件大小超过 100 MB

推送时可以看出 MB 和 MiB 之间的混淆:在下面的示例中,来自 GitHub 服务器的错误消息指示文件为 101 MB,而 git 正确指示文件为 101 MiB:

~\Documents\GitHub\test123 [master ↑1 +3 ~0 -0 !]> git push
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 101.03 MiB | 896.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File S
torage - https://git-lfs.github.com.
remote: error: Trace: e9206a9cd05c4ff5de79bba9d4caf9df
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File 101MB is 101.00 MB; this exceeds GitHub's file size limit of
 100.00 MB
To https://github.com/Franck-Dernoncourt/test123.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/Franck-Dernoncourt/test12
3.git'
~\Documents\GitHub\test123 [master ↑1 +3 ~0 -0 !]>
于 2017-03-29T16:18:40.683 回答
0

使用这个 Python 脚本来清理你的大文件仓库(我用它在我的仓库中,效果很好)https://gist.github.com/1433794

于 2013-06-29T22:31:08.917 回答
0

我尝试了上述几个答案,但没有成功。但最终我找到了使用 Github Desktop 的解决方案。单击“存储库”,“撤消最近的提交”。它允许我做两次,足以删除有问题的提交。(我已经从存储库中删除了大文件)。

于 2017-05-31T11:39:32.957 回答