git-lfs插件


Git本地會保存文件所有版本,對於大文件很容易導致倉庫體積迅速膨脹

為了解決這個問題,Github在2015.4宣布推出Git LFS(Large File Storage),詳見:Announcing Git Large File Storage (LFS)

其方法是在Git倉庫中內嵌一個類似svn工作原理的倉庫,被標記放在LFS的文件在Git倉庫中僅存放一個指針

執行檢出、更新、撤銷、切換分支等操作時,根據指針的變化從遠程LFS倉庫下載對應文件到本地LFS Cache(在.git\lfs\objects目錄中)

 

與git一樣,git-lfs也是開放源代碼的,其源碼托管在github的git-lfs站點上

git1.8.5及之后版本才支持git lfs,git2.12及之后版本集成了git-lfs(在git安裝目錄的mingw64\bin\git-lfs.exe

也可以從git-lfs的官網下載最新的版本進行安裝。安裝完成后會在git lfs安裝目錄中釋放git-lfs.exe,並添加一個名為GIT_LFS_PATH的環境變量指向該目錄

但是,若git自帶了git-lfs.exe,git並不會使用新安裝的git-lfs.exe(通過執行git lfs version顯示當前使用的git-lfs版本)

可以將新安裝的git-lfs.exe拷貝覆蓋git的安裝目錄的mingw64\bin\git-lfs.exe來使用新安裝的git-lfs版本

 

執行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 version  // 查看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 "*.a" "*.dylib" "*.so" "*.lib" "*.dll"  // a、dylib、so、lib、dll文件用lfs來管理,會在根目錄的.gitattributes文件中添加

*.dylib filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.lib filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.a 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 的反思

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM