Git本地會保存文件全部版本,對於大文件很容易致使倉庫體積迅速膨脹git
爲了解決這個問題,Github在2015.4宣佈推出Git LFS(Large File Storage),詳見:Announcing Git Large File Storage (LFS)github
其方法是在Git倉庫中內嵌一個相似svn工做原理的倉庫,被標記放在LFS的文件在Git倉庫中僅存放一個指針服務器
執行檢出、更新、撤銷、切換分支等操做時,根據指針的變化從遠程LFS倉庫下載對應文件到本地LFS Cache(在.git\lfs\objects目錄中)svn
與git同樣,git-lfs也是開放源代碼的,其源碼託管在github的git-lfs站點上ui
git1.8.5及以後版本才支持git lfs,git2.12及以後版本集成了git-lfs(在git安裝目錄的mingw64\bin\git-lfs.exe)spa
也能夠從git-lfs的官網下載最新的版本進行安裝。安裝完成後會在git lfs安裝目錄中釋放git-lfs.exe,並添加一個名爲GIT_LFS_PATH的環境變量指向該目錄.net
可是,若git自帶了git-lfs.exe,git並不會使用新安裝的git-lfs.exe(經過執行git lfs version顯示當前使用的git-lfs版本)開放源代碼
能夠將新安裝的git-lfs.exe拷貝覆蓋git的安裝目錄的mingw64\bin\git-lfs.exe來使用新安裝的git-lfs版本3d
執行git lfs install,在全局配置文件.gitconfig加入filter "lfs"信息 // 所在目錄:c:/users/<用戶名>/.gitconfig指針
[filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true
若在某個git版本庫所在目錄,執行git lfs install,除了上述功能外,還會爲當前git版本庫添加hook腳本(也能夠單獨執行git lfs update來添加hook腳本),使得在執行git標準命令時自動執行git lfs命令
執行git lfs uninstall,對於上面兩種狀況,會嚴格執行git lfs install的逆操做來進行清理
經常使用命令
git lfs help // 查看git lfs的幫助
git lfs track // 查看git lfs的文件追蹤信息
git lfs track '*.dll' // dll文件用lfs來管理,會在根目錄的.gitattributes文件中添加:*.dll filter=lfs diff=lfs merge=lfs -text
git lfs track 'Guid.upk' // Guid.upk文件用lfs來管理,會在根目錄的.gitattributes文件中添加:Guid.upk filter=lfs diff=lfs merge=lfs -text
git lfs track 'maps/*' // 根目錄下maps文件夾中的全部文件用lfs來管理,會在根目錄的.gitattributes文件中添加:maps/* filter=lfs diff=lfs merge=lfs -text
git lfs untrack 'Guid.upk' // Guid.upk文件再也不使用lfs來管理
git lfs status // 查看當前git lfs對象的狀態
git lfs ls-files // 查看當前哪些文件是使用lfs管理的
git lfs clone https://github.com/kekec/Test.git // 克隆包含Git LFS的遠程倉庫到本地
git lfs env // 查看環境信息
參考