如果你使用 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)。
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 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)