Github 上传超过100M的大文件
...
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: ... is 166.89 MB; this exceeds GitHub's file size limit of 100.00 MB
上面错误的原因很好理解就是GitHub不允许直接上传大文件(超过100M)的文件到远程仓库,若要想继续提交可以尝试使用大文件支持库:https://git-lfs.github.com
LFS使用的简单步骤:
-
安装 git-lfs 到本机
//安装git-lfs
brew install git-lfs
- 使用 git-lfs
- 安装git 命令行扩展
git lfs install
- 选择您希望Git LFS管理的文件(或直接编辑 .gitattributes)。您可以随时配置其他文件扩展名。这一步成功后会生成一个 .gitattributes 文件
//追踪指定目录下的文件
git lfs track "A/"
//追踪单个文件
git lfs track "A/XXXFramework/xxx"
//追踪指定类型文件
git lfs track "*.a"
- 添加 并 commit .gitattributes 文件
git add .gitattributes
git commit -m "提交.gitattributes 文件"
git push
- 现在可以正常添加、提交项目
git add .
git commit -m "提交test大文件文件"
git push
注意
- 在提交大文件前,最好先把 .gitattributes 文件push到github远程仓库,最后再正常提交项目大文件。
- 不先把 .gitattributes push到github,还是可能出现push fail的情况。
- 注意大文件路径不要错了,可以使用相对路径。
一些问题
- Remote “origin” does not support the LFS locking API. Consider disabling it with
# 在最后一步push的时候
git push
Remote "origin" does not support the LFS locking API. Consider disabling it with:
$ git config lfs.https://github.com/kejee/xxx.git/info/lfs.locksverify false
Git LFS: (0 of 1 files) 0 B / 167.75 MB
error: failed to push some refs to '[email protected]:kejee/xxx.git'
解决方式
git config lfs.https://github.com/xxx.git/info/lfs.locksverify falsefalse
- batch request: Access denied
# 在最后一步push的时候
git push
batch response: Post https://lfs.github.com/kejee/xxx/objects/batch: dial tcp: lookup lfs.github.com: no such host
Uploading LFS objects: 0% (0/2), 0 B | 0 B/s, done
error: failed to push some refs to '[email protected]:kejee/xxx.git'
解决方式
# 删除 .git/hooks/pre-push 文件即可
That looks like a server issue with deploy keys. For now, try removing .git/hooks/pre-push.
- GitHub 目前 Git LFS的总存储量为1G左右,超过需要付费。(上传失败时,可以开启VPN进行上传)
- batch response: Repository or object not found
$ git lfs push origin master
Git LFS: (0 of 1 files) 0 B / 207.25 MB
batch response: Repository or object not found: https://gitee.com/xxx.git/info/lfs/objects/batch
Check that it exists and that you have proper access to it
失败原因
是gitee.com这个git仓库并不支持lfs,所以在大文件入库的时候,提示失败
附加知识
/**
--soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file
--hard
删除工作空间的改动代码,撤销commit且撤销add
*/
//HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
git reset --soft HEAD^
//如果想要一下撤回2次,可以使用HEAD~2
git reset --soft HEAD~2
//撤销了本地的提交后,想撤销远程的提交,可以通过添加 --force强制同步 达到目的
git push --force