欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

使用 LFS 解决 GitHub 无法上传大文件问题

如果你使用 Git 上传大于 100M 的文件时,你会遇到如下的问题:

iteblog@www.iteblog.com /d/spark-summit-north-america-2018-06 (master)
$ git push origin master
fatal: AggregateException encountered.
   ▒▒▒▒һ▒▒▒▒▒▒▒▒▒▒
Username for 'https://github.com': 397090770
Counting objects: 78, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (78/78), done.
Writing objects: 100% (78/78), 536.84 MiB | 176.00 KiB/s, done.
Total 78 (delta 0), reused 0 (delta 0)
remote: warning: File ppt/Implementing AutoML Techniques at Salesforce Scale.pdf is 66.68 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 26e717df3f5319727d270b809a6a2a89
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File iteblog.pdf is 181.06 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/397090770/spark-summit-north-america-2018-06.git
   e6a9d91..492d5bb  master -> master

从上面的信息可以看出,在提交的文件里面有一个文件大小为 181.06 MB,大于 GitHub 最大文件限制大小。仔细看下报错信息,里面提供了解决办法,就是使用 Git Large File Storage (LFS)

使用 LFS 解决 GitHub 无法上传大文件问题
如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

GitHub LFS 是一个开源的 git 扩展,可以让 git 追踪大文件的版本信息。LFS 使用文件指针来代替大文件,如音频文件,视频文件,数据采集和图形等文件,同时将文件内容存储到远程服务器,比如 GitHub.com 或者 GitHub Enterprise 。LFS 是 GitHub 所支持的一种完全免费的服务,目的是让 git 能跟踪大文件。使用 GitHub LFS 也非常地简单,按照下面的步骤即可。

  • 下载相应平台的 GitHub LFS,然后在 git 里面安装 GitHub LFS 扩展,我这里是在 Windows 上进行的,其他系统类似。到 Git LFS 安装目录下执行下面命令:
  • C:\Program Files\Git LFS>git lfs install
    Git LFS initialized.
    

    这里显示我们安装大文件扩展成功了,现在我们可以使用下面命令来往 GitHub 上传大文件。

  • git lfs track 命令跟踪特定后缀的大文件:
  • $ git lfs track "pdf/*.pdf"
    Tracking "pdf/*.pdf"
    

    上面的命令意思是跟踪 pdf 目录下所有后缀为 pdf 的大文件。执行完上面的命令之后,git 会生成一个名为 .gitattributes 的文件,其内容为

     pdf/*.pdf filter=lfs diff=lfs merge=lfs -text
    

    可以看出,其实我们也可以直接编辑 .gitattributes 文件来管理大文件。

  • 我们也要跟踪 .gitattributes 文件:
  • $ git add .gitattributes
    
  • 接下来就可以像正常使用 git 一样来将大文件提交到 GitHub 了:
  • $ git add .
    $ git commit -m "init by iteblog"
    $ git push origin iteblog
    

如果在提交的时候遇到下面文件:

Remote "origin" does not support the LFS locking API. Consider disabling it with:
  $ git config lfs.https://github.com/397090770/spark-summit-north-america-2018-06.git/info/lfs.locksverify false
Git credentials for https://github.com/397090770/spark-summit-north-america-2018-06.git not found.
error: failed to push some refs to 'https://github.com/397090770/spark-summit-north-america-2018-06.git'

按照上面的提示,我们先执行 git config lfs.https://github.com/397090770/spark-summit-north-america-2018-06.git/info/lfs.locksverify false 命令,最后再执行 git push origin iteblog 就可以正确提交大文件了。

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【使用 LFS 解决 GitHub 无法上传大文件问题】(https://www.iteblog.com/archives/2380.html)
喜欢 (7)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!