克隆(clone)整個倉庫是使用 Git 的標準操做過程。每一個克隆一般包括存儲庫中的全部內容。git
這意味着克隆時,不只會獲得文件,還會獲得曾經提交的每一個文件的每一個修訂版本,以及每次提交的歷史記錄。並且,若是您的代碼庫裏有不少資產,那將包含很長的歷史。主要問題是,這將在持續集成(CI)管道中形成瓶頸。github
查看 github.com 等代碼庫的優化項目,常常須要把代碼完成克隆下來,越是星多的項目,代碼量越大,歷史也可能越長,在國內網絡很差的狀況下,常常下載若干GB之後,斷網。一旦中斷,沒法續傳,又得從頭開始,苦不堪言。服務器
固然能夠經過下載zip/gz發行源碼包來完成,但若是想參與項目開發,這個方案就不可行了。網絡
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
徹底覆蓋您的歷史記錄。但當心點。這將破壞您的本地未推送修改。