當咱們往github上push超過50M的文件時,github會給出警告;而當文件大小超過100M的時候,github會reject。雖然咱們通常不推薦往github上push大文件,但當有些資源文件或大型的數據集確實須要用版本管理起來時,咱們該如何作呢?git
Git LFS (Git Large File Storage ),它的核心思想能夠用下圖描述:
github
如上圖所示,Git remote server並無真正保存上傳的大文件,而是有一個文本指針指向了大文件所存儲的位置(github有專門存儲大文件的地方,所以你能夠不用關心它具體存儲的位置),若是你本地沒有安裝git lfs,卻clone了一個使用了git lfs的倉庫的話,你會發現有些文件是文本類型,並有相似以下內容:api
version https://git-lfs.github.com/sp...
oid sha256:4b99dbe6fe6f646b2026de93481045bbf34f995559db15fce34d192f1f320ef4
size 156154
這些文件就是文本指針。你能夠在安裝完git lfs後使用git lfs pull
命令將大文件真正的pull下來。bash
打開命令行運行url
git lfs install
以上命令只需執行一次,使git lfs完成全局的配置。spa
針對須要track的大文件運行下面的命令:命令行
# 跟蹤單個文件 git lfs track "<file_name>" # 跟蹤一類文件,如改爲目錄的全部以「.zip」結尾的文件 git lfs track "*.zip" # 跟蹤「dir」文件夾及其全部內容 git lfs track "dir/**"
git lfs track命令的 track 規則與.gitignore的規則同樣,請參考 https://git-scm.com/docs/giti...。指針
.gitattributes
文件,裏面記錄了你所track的文件,你也能夠直接編輯該文件來改變track規則。接下來注意,先add並commit.gitattributes
文件,按照官網的說法這時再按通常git的操做已經能夠push大文件了,可是本人沒有試成功,後來參考別人成功的經驗是,不只要add和commit該文件,還要先將該文件push上去,而後再對你的大文件進行普通的git操做。固然,在push以前能夠先運行git lfs ls-files
來查看相應的文件是否track成功。Git LFS 的詳細命令,能夠經過code
$ git lfs help <command> $ git lfs <command> -h
來查看,或是進入https://github.com/git-lfs/gi...打開任意一個你感興趣的以.ronn
爲後綴的文件,裏面有對該命令的較爲詳細的描述。server