Github 存储大文件
最近在做项目的时候,需要上传一个超过 200MB 的数据库文件到 Github 上保存,结果 Github 提示文件过大。这才知道 Github 对单文件有 100 MB 的容量限制。
# 问题介绍
正常情况下,我们执行 add, commit 操作的时候都没啥问题。
$ git add .
$ git commit -m "add large file"
1
2
2
但是执行 push 操作的时候会返回错误。
$ git push
Enumerating objects: 21, done.
Counting objects: 100% (21/21), done.
Delta compression using up to 10 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (17/17), 153.95 MiB | 13.82 MiB/s, done.
Total 17 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (4/4), completed with 3 local objects.
remote: error: Trace: ###
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File xxx.db is 259.50 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
To https://github.com/acgotaku/switch.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/{user}/{repo}.git'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
这里提示我们可以使用 Git Large File Storage 来解决。
# 安装 LFS
根据官网的教程进行安装:
$ brew install git-lfs
1
然后 cd 到对应的 repo:
$ cd {repo}
$ git lfs install
Updated git hooks.
Git LFS initialized.
1
2
3
4
2
3
4
# 重新提交
这时候我们需要保留文件的同时,取消 commit:
$ cd {REPO}
$ git reset --soft HEAD^
1
2
2
然后单独提交大文件:
$ git lfs track {LARGE_FILE}
Tracking {LARGE_FILE}
$ git add .gitattributes
1
2
3
2
3
执行第一行命令之后会生成一个 .gitattributes
文件,记得这个也需要一并提交。
接下来执行普通的 add commit, push 三个步骤就可以了。
$ git add .
$ git commit -m "add large file"
$ git push
1
2
3
2
3
# 总结
Github 针对大文件存储有一个月 1GB 流量的限制,所以如果到达限制了需要付费才能继续使用。