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