使用Git LFS上传大文件到GitHub教程,以及可能会遇到的坑(使用了Git LFS却依然传不上超过100M的文件;framework库如何添加等)

什么是Git LFS?

Git LFS(Large File Storage) 是 Github 开发的一个 Git 的扩展,用于实现 Git 对大文件的支持

简单的说,就是如果你想传超过100M的二进制文件到GitHub,你就要用Git LFS!

安装Git LFS

首先确保电脑已经安装了Git并且版本不低于1.8.5

下面为不同平台的安装方法:

Linux

  1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
    `
  2. sudo apt-get install git-lfs
  3. git lfs install

Mac

 (

  1. 安装HomeBrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. brew install git-lfs
  3. git lfs install

本人为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

 ”解决办法:https://stackoverflow.com/questions/40592463/homebrew-install-fails-while-copying-files)

 

Windows

  1. 下载安装 windows installer
  2. 运行 windows installer
  3. 在命令行执行 git lfs install

可以通过命令“git lfs version”来查看git lfs是否安装完成

如何使用Git LFS

下面开始添加大文件到git lfs

所有的步骤都完成了

可能会遇到的问题

1,(使用了Git LFS却依然传不上超过100M的文件)

进行到上面第五步git push之后依然提示,文件超过100M,上传失败之类的错误信息,如下

 

  1. 如果有大文件"xxx/aaa",xxx为你启动终端的相对路径,aaa是超过100M的大文件
  2. 输入命令git lfs track "xxx/aaa"---添加aaa文件,git lfs会在工程目录下生成一个gitattributes
  3. 输入命令git add .
  4. 输入命令git commit -m "add big file aaa to the github"
  5. 输入命令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"

这样就可以了 

你可能感兴趣的:(git)