Git
英文 ▾ 主題 ▾ 最新版本 ▾ git-index-pack 最後更新於 2.44.0

名稱

git-index-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),為其建立封裝索引檔 (.idx),並選擇性地為指定的封裝寫入反向索引 (.rev)。封裝壓縮檔連同封裝索引可以放置在 Git 儲存庫的 objects/pack/ 目錄中。

選項

-v

詳細說明正在發生的事情,包括進度狀態。

-o <索引檔>

將產生的封裝索引寫入指定的檔案。若沒有此選項,封裝索引檔的名稱會從封裝壓縮檔的名稱建構,方法是將 .pack 取代為 .idx (如果封裝壓縮檔的名稱沒有以 .pack 結尾,則程式會失敗)。

--[no-]rev-index

提供此旗標時,會產生與指定封裝對應的反向索引 (.rev 檔案)。如果給定 --verify,請確保現有的反向索引正確。優先於 pack.writeReverseIndex

--stdin

提供此旗標時,會從 stdin 讀取封裝,然後將副本寫入 <封裝檔>。如果未指定 <封裝檔>,則封裝會寫入目前 Git 儲存庫的 objects/pack/ 目錄,並使用從封裝內容判定的預設名稱。如果未指定 <封裝檔>,請考慮使用 --keep 以防止此處理程序與git repack之間發生競爭狀況。

--fix-thin

藉由將差異化物件所依據的排除物件新增至封裝,來修正 git pack-objects --thin 產生的「薄」封裝 (詳細資訊請參閱git-pack-objects[1])。此選項僅在搭配 --stdin 使用時才有意義。

--keep

在將索引移動到最終目的地之前,請為相關的封裝檔案建立一個空的 .keep 檔案。此選項通常在使用 --stdin 時是必要的,以防止同時進行的 git repack 處理程序在參考更新為使用封裝中包含的物件之前,刪除新建立的封裝和索引。

--keep=<msg>

與 --keep 類似,在將索引移動到最終目的地之前,建立一個 .keep 檔案。但是,不是建立一個空檔案,而是將 <msg> 後接一個 LF 放入 .keep 檔案。之後可以在所有 .keep 檔案中搜尋 <msg> 訊息,以找出任何已過時的檔案。

--index-version=<版本>[,<位移>]

這僅供測試套件使用。它允許強制設定產生封裝索引的版本,並強制在位於給定位移之上的物件使用 64 位元索引項目。

--strict[=<訊息 ID>=<嚴重性>…​]

如果封裝包含損壞的物件或連結,則會終止。可以傳遞以逗號分隔的 <訊息 ID>=<嚴重性> 清單,以變更某些可能問題的嚴重性,例如 --strict="missingEmail=ignore,badTagName=error"。如需有關 <訊息 ID><嚴重性> 可能值的詳細資訊,請參閱 git-fsck[1]fsck.<訊息 ID> 配置選項的項目。

--progress-title

僅供內部使用。

設定進度列的標題。標題預設為「接收物件」,指定 --stdin 時為「索引物件」。

--check-self-contained-and-connected

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

--fsck-objects[=<訊息 ID>=<嚴重性>…​]

如果封裝包含損壞的物件,則會終止,但與 --strict 不同,不會因損壞的連結而失敗。如果封裝包含指向不存在的 .gitmodules blob 的樹狀結構,則會在放入封裝/索引檔名稱的雜湊之後,列印該 blob 的雜湊 (供呼叫端檢查) (請參閱「注意事項」)。

可以傳遞以逗號分隔的 <訊息 ID>=<嚴重性> 清單,以變更某些可能問題的嚴重性,例如 --fsck-objects="missingEmail=ignore,badTagName=ignore"。如需有關 <訊息 ID><嚴重性> 可能值的詳細資訊,請參閱 git-fsck[1]fsck.<訊息 ID> 配置選項的項目。

--threads=<n>

指定解析差異時要產生的執行緒數目。這需要使用 pthreads 編譯 index-pack,否則此選項會被忽略並發出警告。這是為了縮短多處理器電腦上的封裝時間。但是,差異搜尋視窗所需的記憶體量會乘以執行緒數目。指定 0 會導致 Git 自動偵測 CPU 數目,並最多使用 3 個執行緒。

--max-input-size=<大小>

如果封裝大於 <大小>,則會終止。

--object-format=<雜湊演算法>

為封裝指定指定的物件格式 (雜湊演算法)。有效值為 sha1 和 (如果已啟用) sha256。預設值為目前儲存庫的演算法 (由 extensions.objectFormat 設定),如果未設定值或在儲存庫外部,則為 sha1

此選項不能與 --stdin 搭配使用。

注意:目前,SHA-256 儲存庫和 SHA-1 儲存庫之間沒有互通性。

從歷史上看,我們警告說,當我們引入此類互通性功能時,SHA-256 儲存庫可能稍後需要不相容的變更。今天,我們只預期相容的變更。此外,如果證明有必要進行此類變更,可以預期使用當前 Git 建立的 SHA-256 儲存庫,將可由未來版本的 Git 使用,而不會遺失資料。

--promisor[=<訊息>]

在提交封裝索引之前,請為此封裝建立 .promisor 檔案。當使用 --fix-thin 寫入承諾封裝時特別有用,因為封裝的名稱直到完全寫入封裝後才會最終確定。如果提供 <訊息>,則該內容會寫入 .promisor 檔案以供未來參考。如需詳細資訊,請參閱部分複製

注意事項

建立索引後,會將放入封裝/索引檔名稱的雜湊列印到 stdout。如果同時使用 --stdin,則會加上「pack\t」或「keep\t」作為前綴 (如果已成功建立新的 .keep 檔案)。這可用於移除作為鎖定的 .keep 檔案,以防止上述與 git repack 的競爭。

GIT

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

scroll-to-top