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

Lea*_*wly 27 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"
Run Code Online (Sandbox Code Playgroud)

但是,当我推:

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
Run Code Online (Sandbox Code Playgroud)

当我查看有问题的文件夹时:

-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*
Run Code Online (Sandbox Code Playgroud)

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

*.csv filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

UPDATE

当我查询

git lfs ls-files
Run Code Online (Sandbox Code Playgroud)

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

pit*_*as3 44

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

git lfs migrate import --include="*.csv"
Run Code Online (Sandbox Code Playgroud)

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

有关更多信息,git lfs migrate请访问Git LFS 2.2.0 发行说明站点git-lfs-migrate 命令文档

  • 这是一个更现代的答案,应该被推到顶部。对于阅读本文的任何人,请在回答上述任何答案之前尝试此操作。 (4认同)
  • 尝试了上述所有答案后,效果非常好,这是由 Zoom 引起的问题。 (2认同)
  • 如果您收到“不是有效的 git 命令”错误,请确保安装 lfs。可以在此处找到适用于所有平台的操作指南。- /sf/answers/3411403411/ (2认同)

Edw*_*son 22

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

您需要重写历史记录,以便将git-lfs引入现有提交.我推荐最近添加了LFS支持的BFG repo清理工具.

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

$ java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection
Run Code Online (Sandbox Code Playgroud)


Cod*_*ker 22

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

git lfs migrate import --include="*.csv"
Run Code Online (Sandbox Code Playgroud)


Jig*_*ani 14

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

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

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

git push


Joa*_*uim 12

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

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

sudo apt-get install git-lfs
git-lfs install
Run Code Online (Sandbox Code Playgroud)

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

git lfs migrate import --include="*.ipynb" 
Run Code Online (Sandbox Code Playgroud)

选择要跟踪的文件类型

git lfs track "*.ipynb"
Run Code Online (Sandbox Code Playgroud)

更新 gitattributes

git add .gitattributes
Run Code Online (Sandbox Code Playgroud)

现在推送到 git git commit -m "commit message" git push

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

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


avi*_*jee 11

我遇到了同样的问题,而我的一些 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'

Run Code Online (Sandbox Code Playgroud)

原帖链接


Phi*_*lor 9

我昨天遇到了同样的问题而破解了它.我无法推动,似乎我的大文件都没有在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现在分别下载文件,一切都运行良好.


小智 6

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

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

git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)

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

然后,

git push origin --force
Run Code Online (Sandbox Code Playgroud)


Yar*_*rik 5

我有这个错误:

远程:错误:文件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'

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