使用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
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"
這樣就可以了