設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 無更改
-
2.51.0
2025-08-18
- 2.50.1 無更改
-
2.50.0
2025-06-16
- 2.45.1 → 2.49.1 無更改
-
2.45.0
2024-04-29
- 2.42.1 → 2.44.4 無更改
-
2.42.0
2023-08-21
- 2.1.4 → 2.41.3 無更改
-
2.0.5
2014-12-17
描述
傳統上,分支和標籤的尖端(統稱為引用)儲存在 $GIT_DIR/refs 目錄下的子目錄中,每個引用一個檔案。雖然許多分支尖端傾向於頻繁更新,但大多數標籤和一些分支尖端從不更新。當一個倉庫有成百上千的標籤時,這種每個引用一個檔案的格式既浪費儲存空間又損害效能。
此命令用於透過將引用儲存在一個檔案中 $GIT_DIR/packed-refs 來解決儲存和效能問題。當在傳統的 $GIT_DIR/refs 目錄層次結構中找不到某個引用時,它會在該檔案中查詢,如果找到則使用。
對分支的後續更新始終會在 $GIT_DIR/refs 目錄層次結構下建立新檔案。
處理具有過多引用的倉庫的推薦做法是使用 --all 打包一次其引用,並偶爾執行 git pack-refs。標籤根據定義是固定的,不應更改。分支頭將使用初始的 pack-refs --all 進行打包,但只有當前活動的分支頭會解包,下一個(不帶 --all 的)pack-refs 將把它們保持解包狀態。
選項
- --all
-
該命令預設打包所有已打包的標籤和引用,並忽略其他引用。這是因為分支預計會活躍開發,打包它們的尖端無助於效能。此選項會打包所有引用,但隱藏引用、損壞引用和符號引用除外。對於具有許多歷史分支的倉庫很有用。
- --no-prune
-
該命令通常在打包後刪除
$GIT_DIR/refs層次結構下的鬆散引用。此選項指示它不要這樣做。 - --auto
-
根據引用資料庫的當前狀態按需打包引用。行為取決於倉庫使用的引用格式,並可能在未來發生變化。
-
"files": 鬆散引用根據鬆散引用與
packed-refs檔案大小的比例打包到packed-refs檔案中。packed-refs檔案越大,在重新打包之前需要存在的鬆散引用就越多。 -
"reftable": 表被壓縮,形成幾何序列。對於兩個表 N 和 N+1,其中 N+1 較新,這保持了 N 至少是 N+1 兩倍的屬性。只有違反此屬性的表才會被壓縮。
-
- --include <pattern>
-
根據
glob(7) 模式打包引用。重複使用此選項會累加包含模式。如果一個引用同時被--include和--exclude包含,則--exclude具有優先權。使用--include將預設排除所有標籤。符號引用和損壞引用永遠不會被打包。與--all一起使用時,將不起作用。使用--no-include清除並重置模式列表。 - --exclude <pattern>
-
不要打包與給定
glob(7) 模式匹配的引用。重複使用此選項會累加排除模式。使用--no-exclude清除並重置模式列表。如果一個引用已經被打包,使用--exclude包含它也不會將其解包。與
--all一起使用時,僅打包不匹配任何提供的--exclude模式的鬆散引用。與
--include一起使用時,將打包提供給--include的引用,減去提供給--exclude的引用。