簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-index-pack 最近更新於 2.48.0

名稱

git-index-pack - 為現有打包存檔構建 pack 索引檔案

概要

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 結尾,程式將失敗)。

--[no-]rev-index

提供此標誌時,生成與給定 pack 對應的反向索引(一個 .rev 檔案)。如果指定了 --verify,則確保現有反向索引是正確的。此項優先於 pack.writeReverseIndex

--stdin

提供此標誌時,pack 將從標準輸入讀取,然後將副本寫入 <pack-file>。如果未指定 <pack-file>,則 pack 將寫入當前 Git 倉庫的 objects/pack/ 目錄,名稱根據 pack 內容確定。如果未指定 <pack-file>,請考慮使用 --keep 來防止此程序與 git repack 之間出現競爭條件。

--fix-thin

透過將增量化物件所基於的排除物件新增到 pack 中,修復由 git pack-objects --thin 生成的“瘦” pack(詳見 git-pack-objects[1])。此選項僅在與 --stdin 結合使用時才有意義。

--keep

在將索引移動到最終目的地之前,為關聯的 pack 檔案建立一個空的 .keep 檔案。此選項通常與 --stdin 一起使用,以防止同時進行的 git repack 程序在引用更新以使用 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

僅供內部使用。

設定進度條的標題。標題預設為“接收物件”,當指定 --stdin 時為“索引物件”。

--check-self-contained-and-connected

如果 pack 包含損壞的連結,則終止。僅供內部使用。

--fsck-objects[=<msg-id>=<severity>…​]

如果 pack 包含損壞的物件,則終止;但與 --strict 不同,不會因損壞的連結而終止。如果 pack 包含指向不存在的 .gitmodules blob 的樹,則在 pack/idx 檔名中的雜湊之後列印該 blob 的雜湊(供呼叫者檢查)(參見“註釋”)。

可以傳遞一個可選的逗號分隔的 <msg-id>=<severity> 列表,以更改某些可能問題的嚴重性,例如,--fsck-objects="missingEmail=ignore,badTagName=ignore"。有關 <msg-id><severity> 可能值的更多資訊,請參閱 git-fsck[1]fsck.<msg-id> 配置選項的條目。

--threads=<n>

指定解析增量時要生成的執行緒數。這要求 index-pack 使用 pthreads 編譯,否則此選項將被忽略併發出警告。這旨在減少多處理器機器上的打包時間。但是,增量搜尋視窗所需的記憶體量將乘以執行緒數。指定 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 索引之前,為此 pack 建立一個 .promisor 檔案。當使用 --fix-thin 寫入 promisor 包時特別有用,因為 pack 的名稱直到 pack 完全寫入後才確定。如果提供了 <message>,則該內容將寫入 .promisor 檔案以供將來參考。有關更多資訊,請參閱 部分克隆

此外,如果給定 pack 中存在引用非 promisor 物件(在倉庫中)的物件,則將這些非 promisor 物件重新打包到 promisor 包中。這避免了倉庫中存在可透過 promisor 物件訪問的非 promisor 物件的情況。

要求不指定 <pack-file>。

注意事項

索引建立完成後,將 pack/idx 檔名中的雜湊列印到標準輸出。如果同時使用了 --stdin,則此雜湊將以“pack\t”為字首,或者如果成功建立了新的 .keep 檔案,則以“keep\t”為字首。這有助於刪除用作鎖的 .keep 檔案,以防止上述與 git repack 的競爭。

GIT

Git[1] 套件的一部分

scroll-to-top