最近 Git 2.25.0 發佈,這次發佈推出了 partial clones 功能,partial clones 即用戶克隆遠程存儲庫的時候,能夠選擇只下載自身所需的對象,而不是存儲庫的全部對像(或者特定 commit 所關聯的全部對像)。這和微軟以前發佈的 VFSForGit 原理有殊途同歸之妙。使用部分克隆能夠大大的減少用戶克隆巨大存儲庫的耗時,也會減少網絡數據傳輸。部分克隆徹底依賴 Git Wire Protocol (v2 Protocol)。通過幾行代碼的適配和線上的批量更新,Gitee 目前已經支持部分克隆了,當你的 Git 版本大於等於 2.25.0,則能夠使用以下的命令克隆特定的存儲庫: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 protocol.version=2
設置始終使用 v2 協議), --filter
則對克隆過程進行過濾,詳細說明以下:github
更多的部分克隆過濾器參數信息能夠參考:rev-list-options.txt#L735-L780bash
基於部分克隆實現稀疏檢出(這裏須要提早設置 git -c protocol.version=2
):網絡
$ git clone --filter=blob:none --no-checkout /your/repository/here repo
$ cd repo
$ cat >.git/info/sparse-checkout <<EOF
/*
!/*
EOF
$ git config core.sparseCheckout 1
$ git checkout .
複製代碼
關於稀疏檢出的更多細節能夠參考相關文檔。ui
與淺表克隆不一樣的是,部分克隆可以建立提交,這和微軟發佈的 VFSforGit 相似,但 VFSforGit 實現了文件系統驅動級別的過濾器,能夠使用文件系統佔位符避免文件的下載,在讀寫這些文件時,ProjFS 則會從遠程存儲庫下載這些文件。綜合來看,Git 的部分克隆是一個巨大的進步,但還有很大的進步空間。google
Git 2.25.0 更新信息以下:spa