如何使用Git淺克隆來提升性能

如何使用Git淺克隆來提升性能

克隆(clone)整個倉庫是使用 Git 的標準操做過程。每一個克隆一般包括存儲庫中的全部內容。git

這意味着克隆時,不只會獲得文件,還會獲得曾經提交的每一個文件的每一個修訂版本,以及每次提交的歷史記錄。並且,若是您的代碼庫裏有不少資產,那將包含很長的歷史。主要問題是,這將在持續集成(CI)管道中形成瓶頸。github

查看 github.com 等代碼庫的優化項目,常常須要把代碼完成克隆下來,越是星多的項目,代碼量越大,歷史也可能越長,在國內網絡很差的狀況下,常常下載若干GB之後,斷網。一旦中斷,沒法續傳,又得從頭開始,苦不堪言。服務器

固然能夠經過下載zip/gz發行源碼包來完成,但若是想參與項目開發,這個方案就不可行了。網絡

解決方案:Git淺克隆

Git淺表克隆可以讓您僅獲取最新的提交,而不是整個回購歷史記錄。所以,若是您的項目具備多年的歷史記錄或數千次提交的歷史記錄,則能夠選擇一個特定的深度進行提取。性能

如何執行Git淺克隆

在git clone命令中提供--depth 1的參數,以僅複製倉庫的最新版本:優化

git clone -–depth [depth] [remote-url]

您還可使用git淺克隆訪問單個分支:url

git clone [遠程URL] --branch [名稱] --single-branch [文件夾]

使用git淺克隆,您能夠得到更少的文件。能夠快速完成克隆、構建和反饋,能夠更快地交付。code

解決方案:徹底刪除不須要的歷史記錄

若是您不須要維護完整的歷史記錄,則可使用如下命令集從Git存儲庫中徹底刪除歷史記錄。將存儲庫克隆到工做站上的路徑後,請使用 --orphan 選項,該選項只需一次提交便可將其返回到init狀態。ip

如何修剪您的存儲庫

git checkout --orphan freshBranch 
git add -A git commit 
git branch -D master 
git branch -m master 
git push -f origin master 
git gc --aggressive --prune = all  
git push -f origin master

在路徑中添加全部文件並提交。接下來,刪除遠程主分支,將當前分支重命名爲 master。而後,將新的主服務器強制推入代碼託管環境。最後,使用prune命令刪除全部舊文件,而後將新狀態推送到遠程。開發

經過修剪您的存儲庫,能夠提升克隆性能,而無需使用git淺克隆。消除不須要的歷史記錄能夠減輕您的存儲庫的負擔,從而使交付速度更快。

是否要重置本地存儲庫?您還可使用 git force clone 徹底覆蓋您的歷史記錄。但當心點。這將破壞您的本地未推送修改。

相關文章
相關標籤/搜索