設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢視與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.45.1 → 2.47.0 無變更
-
2.45.0
04/29/24
- 2.42.1 → 2.44.2 無變更
-
2.42.0
08/21/23
- 2.1.4 → 2.41.2 無變更
-
2.0.5
12/17/14
描述
傳統上,分支和標籤的頂端(統稱為refs)會以每個 ref 一個檔案的形式儲存在 $GIT_DIR/refs
目錄下的(子)目錄中。雖然許多分支頂端往往會經常更新,但大多數標籤和一些分支頂端永遠不會更新。當儲存庫有數百或數千個標籤時,這種每個 ref 一個檔案的格式既浪費儲存空間又會影響效能。
此命令用於解決儲存和效能問題,方法是將 ref 儲存在單個檔案 $GIT_DIR/packed-refs
中。當在傳統的 $GIT_DIR/refs
目錄階層中找不到 ref 時,會在該檔案中查找,如果找到則使用它。
後續對分支的更新始終會在 $GIT_DIR/refs
目錄階層下建立新檔案。
處理有太多 ref 的儲存庫的建議做法是使用 --all
一次打包其 ref,然後偶爾執行 git pack-refs
。標籤在定義上是靜態的,不希望發生變更。分支 head 將與初始的 pack-refs --all
一起打包,但只有目前活動的分支 head 會被解包,下一個 pack-refs
(不使用 --all
)會讓它們保持解包狀態。
選項
- --all
-
預設情況下,該命令會打包所有已打包的標籤和 ref,並將其他 ref 保持原樣。這是因為預期分支會被積極開發,打包其頂端無助於效能。此選項會導致所有 ref 也被打包,但隱藏的 ref、損壞的 ref 和符號 ref 除外。適用於具有許多歷史感興趣分支的儲存庫。
- --no-prune
-
該命令通常會在打包後刪除
$GIT_DIR/refs
階層下的鬆散 ref。此選項會指示它不要這樣做。 - --auto
-
根據 ref 資料庫的目前狀態,根據需要打包 ref。行為取決於儲存庫使用的 ref 格式,並且未來可能會變更。
-
"files":尚未實作
--auto
的特殊處理。 -
"reftable":表格會經過壓縮,使其形成幾何序列。對於兩個表格 N 和 N+1(其中 N+1 較新),這會保持 N 至少是 N+1 兩倍大的屬性。只有違反此屬性的表格才會被壓縮。
-
- --include <pattern>
-
根據
glob(7)
模式打包 ref。重複使用此選項會累積包含模式。如果 ref 同時包含在--include
和--exclude
中,則--exclude
優先。使用--include
會排除預設包含的所有標籤。符號 ref 和損壞的 ref 永遠不會打包。與--all
一起使用時,它將為空操作。使用--no-include
來清除和重設模式清單。 - --exclude <pattern>
-
不要打包符合給定
glob(7)
模式的 ref。重複使用此選項會累積排除模式。使用--no-exclude
來清除和重設模式清單。如果 ref 已打包,則使用--exclude
包含它不會解包它。
與 --all
一起使用時,僅打包不符合任何提供的 --exclude
模式的鬆散 ref。
與 --include
一起使用時,將會打包提供給 --include
的 ref,減去提供給 --exclude
的 ref。
GIT
屬於 git[1] 套件的一部分