【问题标题】:Git lfs - "this exceeds GitHub's file size limit of 100.00 MB"Git lfs - “这超出了 GitHub 的文件大小限制 100.00 MB”
【发布时间】:2016-01-24 16:02:20
【问题描述】:

我有一些大于 github 文件大小限制 100.00 MB 的 csv 文件。我一直在尝试使用 Git 大文件存储扩展。

https://git-lfs.github.com/

来自 LFS - "Large file versioning- Version large files—even those as large as a couple GB in size—with Git."

我在关注的文件夹上应用了以下内容:

git lfs track "*.csv"

但是,当我按下时:

remote: error: File Time-Delay-ftn/Raw-count-data-minor-roads1.csv is 445.93 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: File Time-Delay-ftn/Raw-count-data-major-roads.csv is 295.42 MB; this exceeds GitHub's file size limit of 100.00 MB

当我查看相关文件夹时:

-rw-r-----   1 user  staff    42B 23 Oct 12:34 .gitattributes
-rw-r--r--   1 user  staff   1.3K 19 Oct 14:32 DfT_raw_major_manipulation.py
-rw-r--r--   1 user  staff   1.2K 16 Oct 15:08 DfT_raw_minor_manipulation.py
drwxr-xr-x  21 user  staff   714B 22 Oct 11:35 Driving/
-rwxr-xr-x@  1 user  staff   295M 19 Oct 14:47 Raw-count-data-major-roads1.csv*
-rwxr-xr-x@  1 user  staff   446M 16 Oct 14:52 Raw-count-data-minor-roads1.csv*

当我 vim .gitattributes 文件时,您可以看到 lfs 设置:

*.csv filter=lfs diff=lfs merge=lfs -text

我做错了什么?

更新

当我查询时

git lfs ls-files

我没有得到任何回报。这表明尽管 .csv 过滤器已成功应用于 .gitattributes 文件,但 lfs 并未拾取 csv 文件

【问题讨论】:

  • “您不能推送大于 100 MB 的文件。” – GitHub.com on Working with large files
  • 你能不能不压缩它们或其他东西来减小尺寸?
  • @Gumbo 该文档还说“考虑引入 Git 大文件存储 (Git LFS)”。这似乎是被问到的。在该链接之后,文档说“这是将大于 100 MB 的文件推送到 GitHub 的理想解决方案”
  • @natb1 - 是的,如果你阅读了文档 - 这正是它所说的。
  • @Henry。谢谢 - 我试过了。在某些情况下仍然太大

标签: git github large-files git-lfs


【解决方案1】:

从 Git LFS 2.2.0 开始,您可以使用git lfs migrate 命令。在你的情况下,它看起来是这样的:

git lfs migrate import --include="*.csv"

在此之后,您应该能够将更改推送到原点。

有关git lfs migrate 的更多信息,请访问Git LFS 2.2.0 release note sitegit-lfs-migrate command documentation

【讨论】:

  • 在尝试了以上所有答案后,工作就像一个魅力,由 Zoom 引起的问题。
  • 这是一个更现代的答案,应该顶到顶部。对于阅读本文的任何人,请在上述任何答案之前尝试此操作。
  • 如果您收到not a valid git command 错误,请确保安装 lfs。可以在此处找到适用于所有平台的指南。 - stackoverflow.com/a/48734334/2480714
  • 谁能帮我解释一下 --include 标志? --include 和 --exclude 有什么区别?提前致谢。
【解决方案2】:

仅将 git-lfs 配置添加到现有存储库不会追溯地将您的大文件转换为 LFS 支持。这些大文件将保留在您的历史记录中,GitHub 将拒绝您的推送。

你需要重写你的历史来将 git-lfs 引入你现有的提交中。我推荐 BFG repo 清理工具,最近added LFS support

您应该能够通过以下方式转换 CSV 文件的历史使用情况:

$ java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection

【讨论】:

  • 谢谢!确实。但是,我对 bfg 的运气并不好。我确实 brew install bfg。我检查了文件路径,但出现错误:无法访问 jarfile /usr/local/cellar/bfg-1.12.5.jar
  • @LearningSlowly - 我不熟悉 brew。我认为您只需要从 GitHub 下载 jar 并按照说明运行它。
  • 我还有一个问题 - 但这绝对解决了我在这里遇到的问题!非常感谢
  • 尝试 bfs 方法大约 3 小时。它似乎没有做任何事情:找到 133 个提交清理提交:100% (133/133) 清理提交在 216 毫秒内完成。 BFG 中止:没有要更新的参考 - 没有找到脏提交?然后制作anti trump cmets,我不在乎。我确实关心它不直观且不起作用
【解决方案3】:

我昨天遇到了同样的问题并破解了它。我无法推送,而且我的大文件似乎都没有在 lfs 中。

可能有更好的方法,但这对我有用。我有一个包含 2.5 演出数据的大型仓库。

我设置了一个新的 repo,然后在其中设置了 lfs。 git lfs init

然后我配置了我的各种文件类型 git lfs track "*.pdb" git lfs track "*.dll" 然后我提交了我的更改并推送。

然后我添加了我的大文件。我使用了 sourcetree,在输出注释中,它会针对与我的通配符匹配的大文件说明它正在提交小 txt 文件。 (对不起,我没有记录这些,但应该很明显)。

然后我推送,看到“跳过文件”,很快推送成功。

所以问题可能是试图将文件添加到您的历史记录中已经存在的 lfs。您只能添加新文件。您可能可以清理这些文件的存储库。

注意:我确实发现很多匹配我的通配符的文件没有被 lfs 拾取。不同文件夹中的类似文件被拾取,但不是全部。我尝试使用完整路径显式添加这些文件。 git lfs track "Windows/bin/myBigFile.dll" 但这也无济于事。最后因为时间关系放弃了。

您还应该使用 gitHub 检查您的存储限制。我购买了额外的 50gig 以满足我的需求。

现在克隆 repo 会单独下载文件,一切终于运行良好。

【讨论】:

  • 谢谢!一个可行的解决方案。但是,我认为使用 BFG 工具是最好的方法。我最终还是在同一条船上,不得不购买 50GB ;)
  • 这里的重要部分是在单独的提交中更新您的 .gitattributes (git track ),而不是添加大文件。
【解决方案4】:

我遇到了这个错误:

远程:错误:文件客户端/静态/静态版本/20171221_221446.psd 为 223.61 MB;这超出了 GitHub 的 100.00 MB 文件大小限制

因为我已经从这个文件夹中删除了这个文件,创建了 .gitignore 文件并尝试提交了几次,我不知道它被缓存了,我无法推送到 github。 在我的情况下帮助:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch client/static/static-version/20171221_221446.psd'

我放置完整文件路径的位置(来自上面的错误)以将其从缓存中删除。之后就推送成功了

【讨论】:

  • 谢谢!这解决了我的问题,但在 git 帮助中我找不到任何关于此的提及
【解决方案5】:

我遇到了同样的问题,但使用filter-branch解决了

git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD

如果你有大项目,这需要一些时间, 然后推它

git push

【讨论】:

    【解决方案6】:

    当我的一些 csv 文件在之前的提交中合并并且 github 拒绝了我的推送时,我遇到了同样的问题。后来我发现这个命令对我有用。

    git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch fixtures/11_user_answer.json'
    # for my case
    git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch tensorflow.csv'
    
    

    Original post link

    【讨论】:

    • 如何链接多个文件?它抱怨我有几个需要从历史记录中删除
    • 什么是扩展类型?如果都是 csv,那么试试 *.csv。或者您要删除的特定扩展类型。
    • 这在本地删除了我的大文件
    【解决方案7】:

    在您的终端中尝试以下命令。它将解决 lfs 问题。

    git lfs migrate import --include="*.csv"
    

    【讨论】:

      【解决方案8】:

      如果您知道哪个提交引入了大提交,您还可以尝试使用引入 Git LFS 的后续提交来压缩该提交。

      例如,如果大型提交是三个之前的提交(如 git status 所揭示),您可以执行以下操作:

      git rebase -i HEAD~3
      

      然后,在交互式对话框中将第一个之后的所有“pick”用法替换为“squash”。

      那么,

      git push origin --force
      

      【讨论】:

        【解决方案9】:

        这个解决方案在 Ubuntu 20.04 上对我有用

        安装 Git 大文件存储 (git-lfs)

        sudo apt-get install git-lfs
        git-lfs install
        

        要将任何预先存在的文件转换为 Git LFS,例如其他分支上的文件或您之前提交历史中的文件,请使用 git lfs migrate 命令

        git lfs migrate import --include="*.ipynb" 
        

        选择要跟踪的文件类型

        git lfs track "*.ipynb"
        

        更新 git 属性

        git add .gitattributes
        

        现在推送到 git git commit -m "提交信息" git推送

        关于存储和带宽使用情况请参考

        https://docs.github.com/en/github/managing-large-files/versioning-large-files/about-storage-and-bandwidth-usage

        【讨论】:

        • 谢谢。这实际上工作得非常顺利。
        【解决方案10】:

        这可能对你有帮助

        Click-OriginalWebPage

        仅将 lfs 安装到现有的 repo 可能是不够的。 您还可以更改提交历史记录。 希望这对你有用。

        【讨论】:

          【解决方案11】:

          看起来你还没有初始化 git-lfs。尝试输入

          git lfs init
          

          来源:Installing Git LFS

          【讨论】:

          • 尝试重新提交并再次推送
          • 谢谢。还在挣扎。当我运行 git lfs ls-files 它返回空白
          • 这不是正确的答案@LearningSlowly 看到这个confluence.atlassian.com/bitbucket/…
          猜你喜欢
          • 2015-09-29
          • 2020-04-22
          • 1970-01-01
          • 1970-01-01
          • 2021-01-24
          • 2020-02-26
          • 2018-01-02
          • 1970-01-01
          • 2018-09-25
          相关资源
          最近更新 更多