SYNOPSIS

git pack-refs [--all] [--no-prune]

DESCRIPTION

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

このコマンドは、refを単一のファイル $GIT_DIR/packed-refs に保存することにより、ストレージとパフォーマンスの問題を解決するために使用されます。旧来の $GIT_DIR/refs ディレクトリ階層にrefがない場合、このファイルの中から探し、見つかればそれが使用されます。

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

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

OPTIONS

--all

このコマンドはデフォルトでは、すでにパックされているすべてのタグとrefをパックし、他のrefはそのままにします。これは、ブランチが積極的に開発されることが期待されており、そのヒントをパックしてもパフォーマンスが向上しないためです。このオプションを使用すると、ブランチのヒントもパックされます。 歴史的な関心のある多くのブランチがあるリポジトリに役立ちます。

--no-prune

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

BUGS

pack-refs メカニズムが導入される前に作成された古い文書では、 "branch <branch> exists" という意味の場合でも ".git/refs/heads/<branch> file exists" などと紹介される場合があります。

GIT

Part of the git(1) suite