什么是Git LFS?
Git LFS(Large File Storage) 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持
简单的说,就是如果你想传超过100M的二进制文件到GitHub,你就要用Git LFS!
安装Git LFS
首先确保电脑已经安装了Git并且版本不低于1.8.5
下面为不同平台的安装方法:
Linux
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
`sudo apt-get install git-lfs
git lfs install
Mac
(本人为mac版本,在安装时候发生了权限错误问题,提示“
fatal: cannot copy '/usr/local/git/share/git-core/templates/hooks/pre-receive.sample' to '/usr/local/Homebrew/.git/hooks/pre-receive.sample': Permission denied
- 安装HomeBrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git-lfs
git lfs install
- ”解决办法:https://stackoverflow.com/questions/40592463/homebrew-install-fails-while-copying-files)
Windows
- 下载安装 windows installer
- 运行 windows installer
- 在命令行执行
git lfs install
可以通过命令“git lfs version”来查看git lfs是否安装完成
如何使用Git LFS
下面开始添加大文件到git lfs
所有的步骤都完成了
可能会遇到的问题
1,(使用了Git LFS却依然传不上超过100M的文件)
进行到上面第五步git push之后依然提示,文件超过100M,上传失败之类的错误信息,如下
- 如果有大文件"xxx/aaa",xxx为你启动终端的相对路径,aaa是超过100M的大文件
- 输入命令git lfs track "xxx/aaa"---添加aaa文件,git lfs会在工程目录下生成一个gitattributes
- 输入命令git add .
- 输入命令git commit -m "add big file aaa to the github"
- 输入命令git push
wodeMacBook-Pro:xxx$ git push origin master
Uploading LFS objects: 100% (1/1), 137 MB | 0 B/s, done
Counting objects: 111, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (110/110), done.
Writing objects: 100% (111/111), 56.71 MiB | 174.00 KiB/s, done.
Total 111 (delta 21), reused 0 (delta 0)
remote: Resolving deltas: 100% (21/21), completed with 4 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: de35e860e6f088f7ca549a40b47655df
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File xxx/aaa is 130.82 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/xxx
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/xxx'
那你可能跟我一样,是在添加大文件100M之后,并且push失败了才下载的git lfs并且添加aaa到git lfs的。
只需要放弃之前添加aaa大文件那次的commit,重新提交文件就可以了
如何撤回commit,可以参考下面的文章
https://blog.csdn.net/quiet_girl/article/details/79487966
比如我自己的操作:
wodeMacBook-Pro:xxx$ git log
wodeMacBook-Pro:xxx$ git reset --hard ac89782e303fd38f423edc678dec823d43a65f35
wodeMacBook-Pro:xxx$ git lfs track "xxx/aaa"
wodeMacBook-Pro:xxx$ git add .
wodeMacBook-Pro:xxx$ git commit -m "add aaa"
wodeMacBook-Pro:xxx$ git push
2,(Framework文件的上传)
如果你是要上传比较大的framework库文件,需要主要的是,framework是一个库文件,二进制文件是包含在里面的,直接添加framework到git lfs是没有用的,需要添加里面的二进制文件
比如我想添加GoogleMobileAds.framework
wodeMacBook-Pro:xxx$ git lfs track "XXX/ADs/GoogleMobileAds.framework/GoogleMobileAds"
这样就可以了