設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.46.1 → 2.47.0 無變更
-
2.46.0
07/29/24
- 2.44.1 → 2.45.2 無變更
-
2.44.0
02/23/24
- 2.39.1 → 2.43.5 無變更
-
2.39.0
12/12/22
- 2.38.1 → 2.38.5 無變更
-
2.38.0
10/02/22
- 2.30.1 → 2.37.7 無變更
-
2.30.0
12/27/20
- 2.29.1 → 2.29.3 無變更
-
2.29.0
10/19/20
- 2.28.1 無變更
-
2.28.0
07/27/20
- 2.27.1 無變更
-
2.27.0
06/01/20
- 2.26.1 → 2.26.3 無變更
-
2.26.0
03/22/20
- 2.25.1 → 2.25.5 無變更
- 2.25.0 無變更
- 2.24.1 → 2.24.4 無變更
-
2.24.0
11/04/19
- 2.23.1 → 2.23.4 無變更
-
2.23.0
08/16/19
- 2.19.3 → 2.22.5 無變更
-
2.19.2
11/21/18
- 2.19.1 無變更
-
2.19.0
09/10/18
- 2.18.1 → 2.18.5 無變更
-
2.18.0
06/21/18
概要
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>
命令
- 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] 套件的一部分