設定與組態
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
- gitattributes
- 命令列介面規範
- Git 日常使用
- 常見問題 (FAQ)
- 詞彙表
- 掛鉤 (Hooks)
- gitignore
- gitmodules
- 修訂版本 (Revisions)
- 子模組
- 教學
- 工作流程
- 所有指南...
管理
底層命令 (Plumbing Commands)
- 2.53.0 → 2.55.0 無變更
-
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),為其建立封裝索引檔案 (.idx),並可選擇為該封裝寫入反向索引 (.rev)。封裝歸檔連同其封裝索引,隨後可放置在 Git 儲存庫的 objects/pack/ 目錄中。
選項
- -v
-
顯示詳細執行過程,包含進度狀態。
- -o <index-file>
-
將產生的封裝索引寫入指定檔案。若無此選項,封裝索引檔案名稱將從封裝歸檔檔案名稱衍生,將 .pack 取代為 .idx(若封裝歸檔名稱不是以 .pack 結尾,程式會失敗)。
- --rev-index
- --no-rev-index
-
提供此旗標時,會產生對應於給定封裝的反向索引(
.rev檔案)。若同時給定--verify,則確保現有的反向索引正確無誤。優先於pack.writeReverseIndex設定。 - --stdin
-
提供此旗標時,封裝會改為從標準輸入 (stdin) 讀取,並將副本寫入 <pack-file>。若未指定 <pack-file>,則封裝會寫入目前 Git 儲存庫的 objects/pack/ 目錄中,並以根據封裝內容決定的預設名稱命名。若未指定 <pack-file>,建議使用 --keep 以防止此行程與 git repack 之間產生競爭狀態。
- --fix-thin
-
修正由
gitpack-objects--thin產生的「精簡 (thin)」封裝(詳見 git-pack-objects[1]),方法是將差量物件所依賴的排除物件加入封裝中。此選項僅在與 --stdin 搭配使用時才有意義。 - --keep
-
在將索引移至最終目的地之前,為關聯的封裝檔案建立一個空的 .keep 檔案。此選項通常在使用 --stdin 時是必要的,以防止同時運行的 git repack 行程在參考 (refs) 更新以使用封裝內的物件之前,刪除剛建立的封裝和索引。
- --keep=<msg>
-
類似 --keep,在將索引移至最終目的地前建立 .keep 檔案。但與其建立空檔案,此選項會將 <msg> 及隨後的換行字元 (LF) 寫入 .keep 檔案中。該 <msg> 訊息之後可在所有 .keep 檔案中搜尋,以找出已過期的檔案。
- --index-version=<version>[,<offset>]
-
此選項僅供測試套件使用。它允許強制指定所產生封裝索引的版本,並強制對位於給定偏移量之後的物件使用 64 位元索引項目。
- --strict[=<msg-id>=<severity>…]
-
若封裝包含損壞的物件或連結,則終止程式。可傳入以逗號分隔的 <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
-
若封裝包含損壞的連結則終止程式。僅供內部使用。
- --fsck-objects[=<msg-id>=<severity>…]
-
若封裝包含損壞的物件則終止程式,但與
--strict不同的是,它不會因損壞的連結而中斷。若封裝包含一個指向不存在的 .gitmodules blob 的樹狀物件 (tree),則會在封裝/索引檔案名稱的雜湊值之後列印出該 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>
-
若封裝大於 <size> 則終止程式。
- --object-format=<hash-algorithm>
-
指定封裝使用的物件格式(雜湊演算法)。有效值為 sha1 以及(若已啟用)sha256。預設為當前儲存庫的演算法(由
extensions.objectFormat設定),若未設定或不在儲存庫內則為 sha1。此選項不能與 --stdin 同時使用。
注意:目前 SHA-256 儲存庫與 SHA-1 儲存庫之間沒有互通性。
從歷史上看,我們曾警告 SHA-256 儲存庫在引入此類互通功能時,可能需要向後不相容的變更。今天,我們預期只會有相容的變更。此外,若證明此類變更確實必要,預期今天由 Git 建立的 SHA-256 儲存庫,在未來的 Git 版本中仍可使用而不會造成資料遺失。
- --promisor[=<message>]
-
在提交封裝索引前,為此封裝建立一個 .promisor 檔案。在使用 --fix-thin 寫入 promisor 封裝時特別有幫助,因為封裝名稱在完全寫入之前尚未確定。若提供 <message>,則該內容會寫入 .promisor 檔案以供未來參考。詳情請參閱 部分複製 (partial clone)。
此外,若給定封裝中的物件參照了非 promisor 物件(在儲存庫中),則將該些非 promisor 物件重新打包進 promisor 封裝。這避免了儲存庫中存在可透過 promisor 物件存取的非 promisor 物件的情況。
要求不得指定 <pack-file>。
注意事項
一旦建立索引,用於封裝/索引檔案名稱的雜湊值會被列印到標準輸出。若同時使用了 --stdin,則此值會加上 "pack\t" 或(若成功建立了新的 .keep 檔案)"keep\t" 前綴。這對於移除作為鎖定以防止上述 git repack 競爭的 .keep 檔案非常有用。
GIT
git[1] 套件的一部分