セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 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
説明
従来、ブランチの先端とタグ(総称してrefsとして知られる)は、$GIT_DIR/refs
ディレクトリの下の(サブ)ディレクトリに、1つのrefにつき1つのファイルとして保存されていました。多くのブランチ先端は頻繁に更新される傾向がありますが、ほとんどのタグと一部のブランチ先端は決して更新されません。リポジトリに何百、何千ものタグがある場合、この1つのrefにつき1つのファイルという形式は、ストレージを無駄にし、パフォーマンスを低下させます。
このコマンドは、$GIT_DIR/packed-refs
という単一のファイルにrefsを保存することで、ストレージとパフォーマンスの問題を解決するために使用されます。従来の$GIT_DIR/refs
ディレクトリ階層にrefが見つからない場合、このファイルで検索され、見つかった場合は使用されます。
ブランチのその後の更新は、常に$GIT_DIR/refs
ディレクトリ階層の下に新しいファイルを作成します。
refが多すぎるリポジトリを扱う推奨される方法は、一度--all
でrefsをパックし、時々git
pack-refs
を実行することです。タグは定義上固定されており、変更されることは想定されていません。ブランチヘッドは最初のpack-refs
--all
でパックされますが、現在アクティブなブランチヘッドのみがアンパックされ、次のpack-refs
(--all
なし)ではそれらはアンパックされたままになります。
オプション
- --all
-
このコマンドはデフォルトで、すべてのタグとすでにパックされているrefsをパックし、他のrefsはそのままにします。これは、ブランチは活発に開発されることが期待されており、その先端をパックしてもパフォーマンスには役立たないためです。このオプションを使用すると、隠されたrefs、壊れたrefs、シンボリックrefsを除いて、すべてのrefsもパックされます。多くの歴史的な関心のあるブランチを持つリポジトリに役立ちます。
- --no-prune
-
このコマンドは通常、パック後、
$GIT_DIR/refs
階層下のルーズなrefsを削除します。このオプションは、削除しないように指示します。 - --auto
-
refデータベースの現在の状態に応じて、必要に応じてrefsをパックします。この動作は、リポジトリで使用されるref形式に依存し、将来変更される可能性があります。
-
"files":
--auto
に関する特別な処理は実装されていません。 -
"reftable": テーブルは幾何級数を形成するように圧縮されます。2つのテーブルNとN+1(N+1が新しい)の場合、NがN+1の少なくとも2倍の大きさであるという特性が維持されます。この特性に違反するテーブルのみが圧縮されます。
-
- --include <pattern>
-
glob
(7
)パターンに基づいてrefsをパックします。このオプションの繰り返しは、包含パターンを累積します。refが--include
と--exclude
の両方に含まれる場合、--exclude
が優先されます。--include
を使用すると、デフォルトですべてのタグが包含されなくなります。シンボリックrefsと壊れたrefsは決してパックされません。--all
と一緒に使用すると、何もしません。--no-include
を使用してパターンのリストをクリアおよびリセットします。 - --exclude <pattern>
-
指定された
glob
(7
)パターンに一致するrefsはパックしません。このオプションの繰り返しは、除外パターンを累積します。--no-exclude
を使用してパターンのリストをクリアおよびリセットします。すでにパックされているrefを--exclude
で包含しても、アンパックされません。--all
と一緒に使用する場合、提供された--exclude
パターンに一致しないルーズなrefsのみをパックします。--include
と一緒に使用する場合、--include
に提供されたrefsから--exclude
に提供されたrefsを差し引いたものがパックされます。
バグ
packed-refsメカニズムが導入される前の古いドキュメントでは、「ブランチ<branch>が存在する」という意味で「.git/refs/heads/<branch>ファイルが存在する」と記載されている場合があります。
GIT
git[1]スイートの一部