SYNOPSIS
'git pack-refs' [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]
DESCRIPTION
旧来、ブランチとタグの先端(tip)(まとめて参照(refs)と呼ばれます)は、 参照ごとに1つのファイルを $GIT_DIR/refs ディレクトリーの下のディレクトリー(サブ・ディレクトリー)に保存していました。 多くのブランチ先端は頻繁に更新される傾向がありますが、 ほとんどのタグと一部のブランチ先端は更新されません。 リポジトリーに数百または数千のタグがある場合、 この 1ファイル毎に1参照の形式はストレージを浪費し、 パフォーマンスを低下させます。
このコマンドは、 参照を単一のファイル $GIT_DIR/packed-refs に保存することにより、 ストレージとパフォーマンスの問題を解決するために使用されます。 旧来の $GIT_DIR/refs ディレクトリ階層に参照がない場合、 このファイルの中から探し、 見つかればそれが使用されます。
その後のブランチの更新では、常に $GIT_DIR/refs ディレクトリ階層の下に新しいファイルが作成されます。
参照が多すぎるリポジトリーを処理するための推奨される方法は、 参照を --all で一度パックし、 ときどき git pack-refs を実行することです。 タグは定義上静止しており、 変更されることは期待されていません。 ブランチ・ヘッドは最初の pack-refs --all でパックされますが、 現在アクティブなブランチ・ヘッドのみはアンパックされ、 その後 pack-refs ( --all なし)ではアンパックされたままになります。
OPTIONS
-
--all -
このコマンドはデフォルトでは、 すでにパックされているすべてのタグと参照をパックし、 他の参照はそのままにします。 これは、 ブランチが積極的に開発されることが期待されており、 その先端をパックしてもパフォーマンスが向上しないためです。 このオプションを使用すると、 非表示の参照や壊れた参照やシンボリック参照 を除く、 すべての参照もパックされます。 過去の履歴として大量のブランチを残しているリポジトリーで特に有用です。
-
--no-prune -
コマンドは通常、それらをパックした後、
$GIT_DIR/refs階層の下の緩い参照(loose refs)を削除します。 このオプションは、そうしないように指示します。 -
--auto -
参照データベースの現在の状態に応じて、 必要に応じて参照をパッキングします。 この振る舞いは、 リポジトリーが使用する参照形式に依存しており、 将来的に変更される可能性があります。
-
files の場合: 緩い参照(loose references)は、 ゆるい参照の数と
packed-refsファイルのサイズの比率に基づいてpacked-refsファイルにパックされます。packed-refsファイルが大きいほど、 再パックを行うために存在する必要がある、ゆるい参照の数が多くなります。 -
reftable の場合: テーブルは等比数列を形成するように圧縮されます。 2つのテーブル N と N+1 (N+1 の方が新しいとする)に対して、 N が N+1 の少なくとも2倍以上の大きさであるという特性を維持します。 この特性に違反するテーブルのみが圧縮されます。
-
-
--include<pattern> -
glob(7) パターンに基づいて参照をパックします。 このオプションを繰り返し指定すると、 包含パターンが蓄積されます。 ある参照が
--includeと--excludeの両方に含まれている場合、--excludeが優先されます。--includeを使用すると、 デフォルトではすべてのタグが含まれなくなります。 シンボリック参照と壊れた参照は決してパックされる事はありません。--allと一緒に使用すると、 なにもしません(noop)。 パターンのリストをクリアして再セットするには、--no-includeを使用します。 -
--exclude<pattern> -
指定された glob(7) パターンにマッチする参照をパックしません。 このオプションを繰り返し指定すると、 除外パターンが蓄積されます。 パターンのリストをクリアして再セットするには、
--no-excludeを使用します。 とある参照がすでにパックされている場合、 それを--excludeで包含してもアンパックされません。--allと一緒に使用すると、 提供された--excludeパターンのいずれにもマッチしない 緩い参照(loose refs)のみをパックします。--includeと一緒に使用すると、--includeで得られた参照から、--excludeで得られた参照を引いたものがパックされます。
BUGS
pack-refs メカニズムが導入される前に作成された古い文書では、 "branch <branch> exists" という意味の場合でも ".git/refs/heads/<branch> file exists" などと紹介される場合があります。
GIT
Part of the git(1) suite