Git
日本語 ▾ トピック ▾ 最新バージョン ▾ git-pack-refsは2.45.0で最後に更新されました

名前

git-pack-refs - 効率的なリポジトリアクセスのためのヘッドとタグのパック

概要

git pack-refs [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]

説明

従来、ブランチとタグの先端(まとめてrefsと呼ばれます)は、$GIT_DIR/refsディレクトリ以下の(サブ)ディレクトリに、refごとに1つのファイルとして格納されていました。多くのブランチの先端は頻繁に更新される傾向がありますが、ほとんどのタグと一部のブランチの先端は更新されません。リポジトリに数百または数千のタグがある場合、このrefごとに1つのファイル形式は、ストレージを浪費し、パフォーマンスを低下させます。

このコマンドは、refを単一のファイル$GIT_DIR/packed-refsに格納することにより、ストレージとパフォーマンスの問題を解決するために使用されます。refが従来の$GIT_DIR/refsディレクトリ階層にない場合、このファイルで検索され、見つかった場合は使用されます。.

ブランチへの後続の更新では、常に$GIT_DIR/refsディレクトリ階層の下に新しいファイルが作成されます。

refが多すぎるリポジトリを処理するための推奨される方法は、一度--allでrefをパックし、 gelegentlich git pack-refsを実行することです。タグは定義上静的であり、変更されることは想定されていません。ブランチヘッドは初期のpack-refs --allでパックされますが、現在アクティブなブランチヘッドのみがアンパックされ、次のpack-refs--allなし)はそれらをアンパックのままにします。

オプション

--all

コマンドはデフォルトですべてのタグと既にパックされているrefをパックし、他のrefはそのままにします。これは、ブランチは活発に開発されると予想され、それらの先端をパックしてもパフォーマンスの向上に役立たないためです。このオプションは、非表示のref、壊れたref、およびシンボリックrefを除いて、すべてのrefもパックします。歴史的に興味深い多くのブランチを持つリポジトリに役立ちます。

--no-prune

コマンドは通常、refをパックした後に$GIT_DIR/refs階層の下にあるルースrefを削除します。このオプションは、削除しないように指示します。

--auto

refデータベースの現在の状態に応じて、必要に応じてrefをパックします。動作は、リポジトリで使用されるref形式によって異なり、将来変更される可能性があります。

  • 「files」: --autoの特別な処理は実装されていません。

  • 「reftable」: テーブルは、等比数列を形成するように圧縮されます。N + 1がより新しい2つのテーブルNとN + 1の場合、これはNがN + 1の少なくとも2倍大きいというプロパティを維持します。このプロパティに違反するテーブルのみが圧縮されます。

--include <パターン>

glob(7)パターンに基づいてrefをパックします。このオプションの繰り返しは、包含パターンを累積します。refが--include--excludeの両方に含まれている場合、--excludeが優先されます。--includeを使用すると、デフォルトですべてのタグが含まれなくなります。シンボリックrefと壊れたrefはパックされません。--allと一緒に使用すると、noopになります。パターンのリストをクリアしてリセットするには、--no-includeを使用します。

--exclude <パターン>

指定されたglob(7)パターンに一致するrefをパックしません。このオプションの繰り返しは、除外パターンを累積します。パターンのリストをクリアしてリセットするには、--no-excludeを使用します。 refが既にパックされている場合、--excludeに含めてもアンパックされません。

--allと一緒に使用すると、指定された--excludeパターンに一致しないルースrefのみがパックされます。

--includeと一緒に使用すると、--includeに提供されたrefから、--excludeに提供されたrefを引いたものがパックされます。

バグ

packed-refsメカニズムが導入される前に書かれた古いドキュメントでは、「ブランチ<branch>が存在する」という意味で「.git/refs/heads/<branch>ファイルが存在する」などと書かれている場合があります。

GIT

git[1]スイートの一部

scroll-to-top