轉殖專案 大型Git倉庫的部分轉殖

2021-10-16 02:17:45 字數 1975 閱讀 3150

第乙個是方法是對倉庫從新規劃,把大的檔案提取出來使用git lfs儲存。

為了解決上述的淺轉殖的限制,git引入了部分轉殖的功能。它是對現有git轉殖的效能優化,允許git在沒有倉庫的完整副本的情況可以工作。它的目標是讓git更好地處理超大型倉庫。部分轉殖的功能在最近發布的版本中已經gitlab 12.4.0以beta版本形式發布,具體可以參考蟲蟲關於gitlab 12.4.0版本發布介紹。

我們把可以稍後提供缺少物件的遠端伺服器叫promisor remote,它承諾在以下情況下傳送物件要求。最初的git僅支援乙個promisor remote,即使用者轉殖並在"extensions.partialclone"配置選項。

簡而言之,部分轉殖的工作方式如下:

使用新的--filter標誌在clone或pull倉庫時將物件從傳輸中排除;

在gitlab 12.4中,如果依賴的git版本為2.21.0,當使用功能標記來啟用uploadpack.allowfilter和uploadpack.allowanysha1inwant。

部分轉殖允許將大型物件直接儲存在git倉庫中,並根據使用者的需要將其從轉殖中排除。這減少了判斷需要哪些物件應該儲存在lfs中或那些不需要儲存在lfs的過程。使用部分轉殖,對所有檔案一視同仁,都可以直接存在倉庫中。

當git伺服器啟用uploadpack.allowfilter

和uploadpack.allowanysha1inwant兩個選項時候我們就可以按一下操作:

轉殖倉庫,但是blob物件大小不得大於1m(排除大小大於1m的blob物件):

git clone --filter=blob:limit=1m
git checkout feature-branch
部分轉殖允許使用與倉庫檔案忽略配置.gitignore類似的格式按路徑過濾轉殖。

伺服器啟用uploadpack.allowfilter和uploadpack.allowanysha1inwant後:

1.建立乙個過濾器配置。例如,考慮乙個包含許多應用程式的整體倉庫,每個應用程式都位於根目錄的不同子目錄中。使用gitlab web介面建立檔案

2、建立乙個新的git倉庫並用git fetch獲取。由於clone命令對"--filter=sparse:oid"的支援不完整,因此需要使用git init和git fetch來模擬clone命令:

為git倉庫建立乙個新目錄:

mkdir ccrebo && cd ccrepo
初始化乙個新的git倉庫:

git init
新增遠端倉位址

git remote add origin
啟用對遠端伺服器的部分轉殖支援

git config --local extensions.partialclone origin
使用伺服器的filterspec過濾物件的獲取:

檢視獲取的檔案,缺少的一些我們尚未提取的物件

git rev-list --all --quiet --objects --missing=print | wc -l
啟用稀疏檢出:

git config --local core.sparsecheckout true
配置稀疏檢出:

檢出主分支

git checkout master

Gitee 目前已經初步支援 Git 部分轉殖

git c protocol.version 2 clone filter blob none git gitee.com your count your repo.git在這個命令中 c protocol.version 2確保始終使用 v2 協議 當然可以git config g protoco...

Git轉殖遠端倉庫的專案到本地

1.第一步 建立ssh key,預設生成在c盤 有可能不在c盤,可能在當前目錄,要把生成的id rsa和id rsa.pub這兩個檔案拷貝到c盤的.ssh資料夾下面 由於本地倉庫與遠端倉庫是通過ssh方式加密,所以需要生成ssh key。ssh keygen t rsa c 1416841861 q...

GIT從遠端倉庫轉殖專案到本地

1.在本地新建乙個資料夾,作為本地倉庫,如 demo 開啟git,輸入命令 cd c users administrator desktop demo 然後按回車鍵進入到該資料夾目錄下。2.第二步 將本地倉庫初始化,命令 git init。3.第三步 將你需要的專案從github或者伺服器上轉殖下來...