58

我有一些大于 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 文件

4

11 回答 11

66

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

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

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

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

于 2020-12-29T20:37:34.300 回答
28

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

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

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

$ java -jar ~/bfg-1.12.5.jar --convert-to-git-lfs '*.csv' --no-blob-protection
于 2015-11-10T15:16:09.820 回答
15

我昨天遇到了同样的问题并破解了它。我无法推送,而且我的大文件似乎都没有在 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 现在可以单独下载文件,一切终于运行良好。

于 2015-11-11T17:39:27.347 回答
15

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

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

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

git push

于 2020-04-02T10:40:51.527 回答
14

我有这个错误:

远程:错误:文件客户端/静态/静态版本/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'

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

于 2017-12-26T04:19:42.627 回答
13

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

原帖链接

于 2020-01-12T00:57:54.997 回答
6

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

git lfs migrate import --include="*.csv"
于 2021-06-30T11:22:09.593 回答
5

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

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

git rebase -i HEAD~3

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

然后,

git push origin --force
于 2019-04-02T22:53:17.570 回答
4

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

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

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

于 2021-06-13T06:38:15.053 回答
-1

这可能会帮助你 在此处输入图像描述

点击-OriginalWebPage

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

于 2019-08-08T03:18:15.823 回答
-3

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

git lfs init

来源:安装 Git LFS

于 2015-10-27T10:30:47.647 回答