設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
-
2.52.0
2025-11-17
- 2.48.1 → 2.51.2 無更改
-
2.48.0
2025-01-10
- 2.44.1 → 2.47.3 無更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 無更改
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 無更改
-
2.42.0
2023-08-21
- 2.36.1 → 2.41.3 無更改
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 無更改
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 無變化
-
2.31.0
2021-03-15
- 2.29.1 → 2.30.9 無變更
-
2.29.0
2020-10-19
- 2.28.1 無更改
-
2.28.0
2020-07-27
- 2.18.1 → 2.27.1 無更改
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 無更改
-
2.17.0
2018-04-02
- 2.12.5 → 2.16.6 無更改
-
2.11.4
2017-09-22
- 2.1.4 → 2.10.5 無更改
-
2.0.5
2014-12-17
概要
git index-pack [-v] [-o <index-file>] [--[no-]rev-index] <pack-file> git index-pack --stdin [--fix-thin] [--keep] [-v] [-o <index-file>] [--[no-]rev-index] [<pack-file>]
描述
讀取指定檔案中的打包存檔 (.pack),為其構建 pack 索引檔案 (.idx),並可選地為指定的 pack 寫入反向索引 (.rev)。然後,打包存檔和 pack 索引可以放置在 Git 儲存庫的 objects/pack/ 目錄中。
選項
- -v
-
詳細說明正在進行的操作,包括進度狀態。
- -o <index-file>
-
將生成的 pack 索引寫入指定檔案。不使用此選項時,pack 索引檔案的名稱是從打包存檔檔案的名稱構建的,方法是將 .pack 替換為 .idx(如果打包存檔的名稱不以 .pack 結尾,則程式會失敗)。
- --rev-index
- --no-rev-index
-
提供此標誌時,生成與給定 pack 相對應的反向索引(一個
.rev檔案)。如果提供了--verify,則確保現有的反向索引是正確的。此選項優先於pack.writeReverseIndex。 - --stdin
-
提供此標誌時,pack 將從 stdin 讀取,然後複製到 <pack-file>。如果未指定 <pack-file>,則 pack 將寫入當前 Git 儲存庫的 objects/pack/ 目錄,其預設名稱由 pack 內容確定。如果未指定 <pack-file>,請考慮使用 --keep 以防止此過程與 git repack 之間發生競爭條件。
- --fix-thin
-
透過新增被包含物件(delta 物件所基於的物件)到 pack 來修復由
gitpack-objects--thin生成的“thin” pack(有關詳細資訊,請參閱 git-pack-objects[1])。此選項僅在與 --stdin 結合使用時才有意義。 - --keep
-
在將索引移動到最終目的地之前,為關聯的 pack 檔案建立一個空的 .keep 檔案。此選項通常在使用 --stdin 時是必需的,以防止同時執行的 git repack 程序在 refs 更新到使用 pack 中包含的物件之前刪除新構建的 pack 和索引。
- --keep=<msg>
-
與 --keep 類似,在將索引移動到最終目的地之前建立一個 .keep 檔案。但是,不是建立一個空檔案,而是將 <msg> 後面加上一個 LF 放入 .keep 檔案。之後可以在所有 .keep 檔案中搜索 <msg> 訊息,以查詢任何已過時的檔案。
- --index-version=<version>[,<offset>]
-
這僅供測試套件使用。它允許強制生成 pack 索引的版本,並在給定偏移量之上的物件上強制使用 64 位索引條目。
- --strict[=<msg-id>=<severity>…]
-
如果 pack 包含損壞的物件或連結,則終止。可以傳遞一個可選的逗號分隔的 <msg-id>
=<severity> 列表來更改某些可能問題的嚴重性,例如--strict="missingEmail=ignore,badTagName=error"。有關 <msg-id> 和 <severity> 的可能值的更多資訊,請參閱 git-fsck[1] 中fsck.<msg-id> 配置選項的條目。 - --progress-title
-
僅供內部使用。
設定進度條的標題。預設標題為“Receiving objects”,在指定
--stdin時為“Indexing objects”。 - --check-self-contained-and-connected
-
如果 pack 包含損壞的連結,則終止。僅供內部使用。
- --fsck-objects[=<msg-id>=<severity>…]
-
如果 pack 包含損壞的物件,則終止,但與
--strict不同,它不會因為損壞的連結而中斷。如果 pack 包含一個指向不存在的 .gitmodules blob 的樹,則在進入 pack/idx 檔名的雜湊之後(請參閱“Notes”)列印該 blob 的雜湊(供呼叫者檢查)。可以傳遞一個可選的逗號分隔的 <msg-id>
=<severity> 列表來更改某些可能問題的嚴重性,例如--fsck-objects="missingEmail=ignore,badTagName=ignore"。有關 <msg-id> 和 <severity> 的可能值的更多資訊,請參閱 git-fsck[1] 中fsck.<msg-id> 配置選項的條目。 - --threads=<n>
-
指定解析 delta 時要生成的執行緒數。這要求 index-pack 已與 pthreads 編譯,否則此選項將被忽略併發出警告。此選項旨在減少多處理器機器上的打包時間。然而,delta 搜尋視窗所需的記憶體量會乘以執行緒數。指定 0 將導致 Git 自動檢測 CPU 數量並最多使用 3 個執行緒。
- --max-input-size=<size>
-
如果 pack 大於 <size>,則終止。
- --object-format=<hash-algorithm>
-
為 pack 指定給定的物件格式(雜湊演算法)。有效值為 sha1 和(如果已啟用)sha256。預設值為當前儲存庫的演算法(由
extensions.objectFormat設定),或在儲存庫外時為 sha1(如果未設定值)。不能將此選項與 --stdin 一起使用。
注意:目前,SHA-256 倉庫與 SHA-1 倉庫之間不具備互操作性。
過去,我們曾警告說 SHA-256 倉庫在引入此類互操作性功能時可能需要向後不相容的更改。今天,我們僅預期相容性更改。此外,如果事實證明這些更改是必要的,那麼可以預期今天 Git 建立的 SHA-256 倉庫將在不丟失資料的情況下被未來版本的 Git 使用。
- --promisor[=<message>]
-
在提交 pack-index 之前,為此 pack 建立一個 .promisor 檔案。在使用 --fix-thin 寫入 promisor pack 時特別有用,因為 pack 的名稱在 pack 完全寫入之前是未知的。如果提供了 <message>,則該內容將寫入 .promisor 檔案以供將來參考。有關更多資訊,請參閱 partial clone。
此外,如果給定的 pack 中存在引用非 promisor 物件(在儲存庫中)的物件,則會將這些非 promisor 物件重新打包到 promisor pack 中。這可以避免儲存庫中存在可以透過 promisor 物件訪問的非 promisor 物件的情況。
要求不指定 <pack-file>。
注意事項
一旦建立了索引,進入 pack/idx 檔名的雜湊將被列印到 stdout。如果還使用了 --stdin,則在此之前會加上“pack\t”或“keep\t”(如果成功建立了新的 .keep 檔案)。這有助於刪除用作鎖的 .keep 檔案,以防止上述與 git repack 的競爭。