由于git是一個分布式設(shè)計,因此本地的版本庫是一個全量的庫。git主要用來托管文本類的文件,但工程中難免會有依賴庫、資源文件等二進(jìn)制文件。git對于二進(jìn)制文件差分是束手無策的,只能全量存儲。如果二進(jìn)制文件比較多或者版本更新頻繁,勢必會導(dǎo)致我們的倉庫達(dá)到不可維護(hù)的狀態(tài)。想象在國內(nèi)“惡劣”的網(wǎng)絡(luò)環(huán)境下,clone一個幾百M甚至到幾G的工程是多么恐怖的事情。因此,一般來說,不建議這類二進(jìn)制進(jìn)入git版本控制中。
很多工程實踐中,會將這類文件存儲在ftp服務(wù)器中,git庫中保存對應(yīng)的地址索引。但是,或許git lfs是一個更好的選擇,其原理和上述實踐原理類似,目前github已經(jīng)完美支持,真是太好了。
-
git lfs 的安裝
- mac下請使用homebrew安裝:
brew install git-lfs
- mac下請使用homebrew安裝:
- linux(unbuntu)下安裝:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
apt-get install git-lfs
-
lfs的使用
- 首先需要在git版本庫所在目錄下對lfs進(jìn)行初始化。 執(zhí)行后,在根目錄下會生成“.gitattributes”文件。
git lfs install - 添加track規(guī)則,下面以后綴為".dat"的二進(jìn)制文件為例。
git lfs track "*.dat"
執(zhí)行后,會發(fā)現(xiàn).gitattributes文件多出一行
*.dat filter=lfs diff=lfs merge=lfs -text
說明已經(jīng)生效。
- 首先需要在git版本庫所在目錄下對lfs進(jìn)行初始化。 執(zhí)行后,在根目錄下會生成“.gitattributes”文件。
- 將.gitattributes加入到版本控制中。
git add .gitattributes
git commit -m "add .gitattributes" - 至此,lfs已經(jīng)配置完成。后續(xù)的二進(jìn)制add、commit、push同正常的代碼提交完全一致,只是在push時會顯示

git push 時lfs track的文件顯示
refrence:
https://git-lfs.github.com/
https://packagecloud.io/github/git-lfs/install