Git lfs - “这超过了GitHub的文件大小限制为100.00 MB”

时间:2015-10-25 14:24:55

标签: git github large-files git-lfs

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

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*

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

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

我做错了什么?

更新

当我查询

git lfs ls-files

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

11 个答案:

答案 0 :(得分:31)

从 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 上找到。

答案 1 :(得分:20)

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

您需要重写历史记录,以便将git-lfs引入现有提交。我推荐最近使用added LFS support的BFG仓库清理工具。

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

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

答案 2 :(得分:8)

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

可能有更好的方法,但这对我有用。我有一个2.5 gig数据的大型回购。

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

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

然后我添加了我的大文件。我使用了sourcetree,并在输出说明中说明了与我的通配符匹配的大文件,它提交的是微小的txt文件。 (对不起,我没有记录这些,但应该是显而易见的)。

然后我推了推,我看到'跳过文件',推送很快就成功了。

所以问题可能是尝试将文件添加到历史记录中已有的lfs。您只能添加新文件。您可以清理这些文件的repo。

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

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

克隆repo现在可以单独下载文件,一切都运行良好。

答案 3 :(得分:8)

当我的某些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

答案 4 :(得分:4)

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

解决了

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

如果您有大型项目,则需要一些时间, 然后推它

git push

答案 5 :(得分:1)

我遇到了这个错误:

  

remote:error:文件client / static / static-version / 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'

我放置完整文件路径(从上面的错误)将其从缓存中删除。之后,推动成功

答案 6 :(得分:0)

如果您知道哪个提交引入了较大的提交,您也可以尝试将该提交与随后引入了Git LFS的提交进行压缩。

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

git rebase -i HEAD~3

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

然后

git push origin --force

答案 7 :(得分:0)

这可能对您有帮助 enter image description here

Click-OriginalWebPage

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

答案 8 :(得分:0)

这个解决方案在 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 push

有关存储和带宽使用情况,请参阅

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

答案 9 :(得分:0)

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

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

答案 10 :(得分:-1)

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

git lfs init

来源:Installing Git LFS