git-lfs插件

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.exespa

也能夠從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  // 查看環境信息

 

參考

Git LFS 服務器實現雜談

Git LFS 的反思

相關文章
相關標籤/搜索