使用大型存放庫

已完成

Git 是受到廣泛採用和推薦的絕佳版本控制系統,但在使用大型存放庫時,有幾個事項應加以考慮。

雖然在分散式版本控制系統中具有存放庫的本機複本便可以正常運作,但在大型存放庫要就位時,這就可能會產生重大的問題。

例如,Microsoft 在將具有超過 300 GB 資料的存放庫從內部系統移轉至 Git 時,就發現了這個問題。

為何存放庫變得很大

有兩個主要原因導致了大型存放庫:

  • 長久的歷程記錄
  • 大型的二進位檔案

淺層複製

如果開發人員不需要其本機存放庫中的所有可用歷程記錄,不妨實作淺層複製。

淺層複製既可以節省本機開發系統上的儲存空間,又省下了同步處理所需的時間。

您可以指定您要執行的複製深度:

git clone --depth [depth] [clone-url]

您也可以藉由篩選分支或只複製單一分支來減少複製內容。

適用於 Git 的 VFS

適用於 Git 的 VFS 可協助處理大型存放庫。 其需要 Git LFS 用戶端。

一般的 Git 命令不會受到影響,但 Git LFS 會與標準檔案系統搭配使用,以便在需要伺服器檔案時可以在背景下載必要的檔案。

Git LFS 用戶端已發行為開放原始碼。 通訊協定是一個簡單明瞭的通訊協定,具有四個類似於 REST 端點的端點。

如需大型存放庫的詳細資訊,請參閱:使用大型檔案適用於 Git 的虛擬檔案系統:以企業規模啟用 Git (英文)。

Scalar

純量圖示的螢幕擷取畫面。

Scalar 是可用於 Windows 和 macOS 的 .NET Core 應用程式。 使用適用於 Git 的工具和擴充功能,可讓大型存放庫將 Git 命令的效能最大化。 Microsoft 會將其用於 Windows 和 Office 存放庫。

如果 Azure Repos 裝載您的存放庫,您可以使用 GVFS 通訊協定 (英文) 來複製存放庫。

這可藉由啟用一些進階的 Git 功能來達成,例如:

  • 部分複製:不會立即下載所有 Git 物件,來減少取得工作存放庫的時間。
  • 背景預先擷取:每小時從所有遠端存放庫下載 Git 物件資料,減少幕前 Git 擷取呼叫的時間。
  • 疏鬆簽出:限制工作目錄的大小。
  • 檔案系統監視器:追蹤最近修改過的檔案,並排除 Git 掃描整個工作樹狀結構的需要。
  • 認可圖:加速認可 walk 和可連線性計算,加速 Git 記錄等命令。
  • 多套件索引:可跨許多套件檔案快速查閱物件。
  • 累加式重新封裝:使用多套件索引,將封裝的 Git 資料重新封裝到較少的套件檔案,無須中斷並行的命令。

注意

在新的 Git 版本發行時,我們會更新由 Scalar 所自動設定的功能清單。

如需詳細資訊,請參閱