Git
English ▾ 主題 ▾ 最新版本 ▾ git-commit-graph 最後更新於 2.46.0

名稱

git-commit-graph - 寫入與驗證 Git 提交圖形檔案

概要

git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
			[--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
			[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
			<split-options>

描述

管理序列化的提交圖形檔案。

選項

--object-dir

使用給定的目錄作為 packfile 和提交圖形檔案的位置。此參數用於指定替代位置,該位置僅具有物件目錄,而不是完整的 .git 目錄。提交圖形檔案預期位於 <dir>/info 目錄中,而 packfile 預期位於 <dir>/pack 中。如果目錄無法轉換為絕對路徑,或與任何已知的物件目錄不符,則 git commit-graph ... 將以非零狀態結束。

--[no-]progress

明確地開啟/關閉進度顯示。如果兩者都未指定,則當標準錯誤連接到終端機時,會顯示進度。

命令

write

根據 packfile 中找到的提交寫入提交圖形檔案。如果組態選項 core.commitGraph 已停用,則此命令會輸出警告,然後返回成功而不寫入提交圖形檔案。

使用 --stdin-packs 選項,僅透過遍歷指定 pack-index 中的物件來產生新的提交圖形。(無法與 --stdin-commits--reachable 組合使用。)

使用 --stdin-commits 選項,透過從 stdin 中以十六進位表示的 OID 清單(每行一個 OID)指定的提交開始遍歷提交來產生新的提交圖形。解析為非提交 (直接或透過剝離標籤) 的 OID 會被靜默忽略。格式錯誤或不存在的 OID 會產生錯誤。(無法與 --stdin-packs--reachable 組合使用。)

使用 --reachable 選項,透過從所有 ref 開始遍歷提交來產生新的提交圖形。(無法與 --stdin-commits--stdin-packs 組合使用。)

使用 --append 選項,包含現有提交圖形檔案中存在的所有提交。

使用 --changed-paths 選項,計算並寫入提交及其第一個父提交之間變更的路徑相關資訊。在大型儲存庫上,此操作可能需要一段時間。它可以顯著提高使用 git log -- <path> 取得目錄或檔案歷史記錄的效能。如果指定此選項,則未來的提交圖形寫入會自動假設此選項是預期的。使用 --no-changed-paths 來停止儲存此資料。

使用 --max-new-filters=<n> 選項,最多產生 n 個新的 Bloom 篩選器 (如果指定了 --changed-paths)。如果 n-1,則不強制執行限制。只有新圖層中存在的提交才會計入此限制。若要追溯計算較早圖層的 Bloom 篩選器,建議使用 --split=replace。覆寫 commitGraph.maxNewFilters 組態。

使用 --split[=<strategy>] 選項,將提交圖形寫為儲存在 <dir>/info/commit-graphs 中的多個提交圖形檔案的鏈結。提交圖層會根據策略和其他分割選項合併。尚未在提交圖形中的新提交會新增到新的「提示」檔案中。如果滿足以下合併條件,則此檔案會與現有檔案合併

  • 如果指定 --split=no-merge,則永遠不會執行合併,並忽略剩餘的選項。--split=replace 會使用新的鏈結覆寫現有的鏈結。單獨使用 --split 會延遲到剩餘的選項。(請注意,合併提交圖形鏈會將現有鏈結取代為長度為 1 的鏈結,其中第一個也是唯一的增量包含整個圖形)。

  • 如果未指定 --size-multiple=<X>,則讓 X 等於 2。如果新的提示檔案將有 N 個提交,而先前的提示有 M 個提交,且 X 乘以 N 大於 M,則將這兩個檔案合併為單一檔案。

  • 如果指定 --max-commits=<M>,其中 M 為正整數,且新的提示檔案將有超過 M 個提交,則將新的提示與先前的提示合併。

    最後,如果未指定 --expire-time=<datetime>,則讓 datetime 為目前時間。在寫入分割的提交圖形後,刪除所有修改時間早於 datetime 的未使用提交圖形。

verify

讀取提交圖形檔案,並根據物件資料庫驗證其內容。用於檢查是否損毀資料。

使用 --shallow 選項,僅檢查分割的提交圖形鏈中的提示提交圖形檔案。

範例

  • 為您本機 .git 目錄中封裝的提交寫入提交圖形檔案。

    $ git commit-graph write
  • 寫入提交圖形檔案,使用 <pack-index> 中的提交來擴充目前的提交圖形檔案。

    $ echo <pack-index> | git commit-graph write --stdin-packs
  • 寫入包含所有可到達的提交的提交圖形檔案。

    $ git show-ref -s | git commit-graph write --stdin-commits
  • 寫入包含目前提交圖形檔案中的所有提交,以及從 HEAD 可到達的提交的提交圖形檔案。

    $ git rev-parse HEAD | git commit-graph write --stdin-commits --append

組態

此部分中此行以下的所有內容都是從 git-config[1] 文件中選擇性包含的。內容與其中找到的內容相同

commitGraph.generationVersion

指定寫入或讀取提交圖形檔案時要使用的產生編號版本類型。如果指定版本 1,則不會寫入或讀取修正後的提交日期。預設為 2。

commitGraph.maxNewFilters

指定 git commit-graph write--max-new-filters 選項的預設值 (c.f., git-commit-graph[1])。

commitGraph.readChangedPaths

已過時。如果為 true,則等同於 commitGraph.changedPathsVersion=-1,如果為 false,則等同於 commitGraph.changedPathsVersion=0。(如果也設定了 commitGraph.changedPathVersion,則 commitGraph.changedPathsVersion 優先。)

commitGraph.changedPathsVersion

指定 Git 將讀取和寫入的已變更路徑 Bloom 篩選器的版本。可以是 -1、0、1 或 2。請注意,大於 1 的值可能與尚未了解這些版本的舊版 Git 不相容。在混合版本環境中作業時請小心。

預設為 -1。

如果為 -1,Git 將使用儲存庫中已變更路徑 Bloom 篩選器的版本,如果沒有,則預設為 1。

如果為 0,Git 將不會讀取任何 Bloom 篩選器,並會在指示寫入時寫入版本 1 Bloom 篩選器。

如果為 1,Git 將僅讀取版本 1 Bloom 篩選器,並將寫入版本 1 Bloom 篩選器。

如果為 2,Git 將僅讀取版本 2 Bloom 篩選器,並將寫入版本 2 Bloom 篩選器。

詳情請參閱 git-commit-graph[1]

檔案格式

GIT

屬於 git[1] 套件的一部分

scroll-to-top