在代碼倉庫體積較大或網絡狀況不佳的情況下,推拉倉庫需要大量的時間,隨之而來的可能還有超時等問題。目前,Codeup已經支持了Git LFS(大文件存儲)和部分克隆、淺克隆等特性,以緩解此類問題,降低本地磁盤空間的占用,減少推拉倉庫所需的時間,可以在大倉庫的場景下帶來更加高效的使用體驗。
Git LFS適用的場景
Git LFS,即Git LFS大文件存儲,如果代碼庫有以下特征,那么非常建議您開始使用Git LFS:
向代碼倉庫中提交了非文本文件,導致倉庫體積迅速膨脹
在某些場景下,需要向倉庫中提交一些非文本文件,例如美術資源、算法模型、編譯產物等。由于二進制文件體積較大且更難壓縮,加上 Git 會保存這些文件的每一歷史版本,倉庫體積迅速膨脹。在克隆倉庫時,所有文件的所有歷史版本均會被下載,這也是克隆時間增長的根源。
使用Git LFS,可以配置特定后綴的文件使用 Git LFS 管理,克隆時不下載這些文件的歷史版本,大大降低克隆的數據量及所需的時間。
Git LFS的使用及注意事項
以下詳盡的文檔將幫助您開始使用 Git LFS,請參見:
淺克隆適用的場景-應用構建
應用構建只需要最新版本的代碼,不必要花費大量時間下載全部代碼。這時候可以使用淺克隆特性,截斷倉庫的歷史,僅下載給定深度內的提交用于最新構建,可以大幅降低拉取時間。淺克隆的使用,請參見git clone 幫助文檔。
部分克隆適用的場景
部分克隆特性,允許克隆倉庫時只克隆部分的倉庫。與淺克隆不同,部分克隆不截斷倉庫的歷史信息,缺失的文件則會在被用到時按需下載。在以下場景,可以考慮使用部分克隆特性:
倉庫的體積較大
即使沒有向倉庫中提交二進制文件,隨著開發者的持續提交,倉庫的體積也會隨之逐漸增長,克隆時間也逐漸增加。在開發時,往往基于代碼的最新版本進行修改,并偶爾的使用到歷史信息。使用部分克隆特性,可以在克隆時過濾歷史版本,加快克隆速度,并在用到歷史信息時自動下載。
微服務單根代碼倉
在這種場景下,所有的代碼都存放于一個大的單根代碼倉中,例如安卓開發。部分克隆配合稀疏檢出,可以使倉庫中的不同成員只下載其關心的部分代碼,不需要每次都下載全部整倉內容。
部分克隆相關幫助文檔,請參見:部分克?。≒artial clone)介紹。
總結
以下這些特性的使用,并不只局限于上文所列場景,功能也不相沖突,可以根據實際情況,靈活結合使用:
Git LFS:適用于倉庫中包含了各類二進制文件導致的倉庫體積膨脹場景。對于倉庫體積超過 Git 容量閾值的情況,需要將二進制文件移至 Git-LFS 進行管理。
淺克隆:適用于只需要克隆給定深度內的倉庫,并且不需要倉庫的歷史信息的情況。在構建加速等場景下非常適用。
部分克?。嚎梢员A魝}庫的歷史信息,并按照對象的類型或者配合稀疏檢出按照目錄下載對象,在用到缺失的對象時自動按需下載。
如果在使用過程中有任何疑問,歡迎您通過提工單聯系支持同學,或者加入云效代碼域答疑群(32027065)進行反饋與咨詢。更多視頻講解材料請參見:Git倉庫膨脹的兩種常見原因和解決方案。