SYNOPSIS

git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]
git refs verify [--strict] [--verbose]
git refs list [--count=<count>] [--shell|--perl|--python|--tcl]
                   [(--sort=<key>)...] [--format=<format>]
                   [--include-root-refs] [--points-at=<object>]
                   [--merged[=<object>]] [--no-merged[=<object>]]
                   [--contains[=<object>]] [--no-contains[=<object>]]
                   [(--exclude=<pattern>)...] [--start-after=<marker>]
                   [ --stdin | (<pattern>...)]
git refs exists <ref>
git refs optimize [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude <pattern>]

DESCRIPTION

このコマンドは参照への低レベル・アクセスを提供します。

COMMANDS

migrate

異なる形式間で参照ストアを移行します。

verify

参照データーベースの一貫性を検証する。

list

フィルタリング、書式設定、ソートをサポートして、リポジトリ内の参照を一覧表示します。このサブコマンドは git-for-each-ref(1) の別名で、同一の機能を提供します。

exists

指定した参照が存在するかどうかを確認します。存在する場合は終了コード 0、存在しない場合は 2 を返し、参照が存在しないこと以外のエラーにより参照の検索に失敗した場合は 1 を返します。これは、参照が実際のオブジェクトに解決されるかどうかは検証しません。

optimize

リポジトリの性能を改善しディスク使用量を減らすために、参照を最適化します。このサブコマンドは git-pack-refs(1) の別名で、同一の機能を提供します。

OPTIONS

以下のオプション達は git refs migrate 用です:

--ref-format=<format>

参照ストアを移行する対象の参照形式。 以下のいずれかになります:

  • files は、 パックされた ref を持つ緩いファイル(loose files)用です。 これがデフォルトです。

  • reftable は reftable 形式です。 この形式は実験的なものであり、 その内部は変更される可能性があります。

--dry-run

移行を実行しますが、 リポジトリーは変更しません。 移行された ref は、 別個に検査できるように別のディレクトリに書き込まれます。 ディレクトリの名前は stdout で報告されます。 これを使用して、 実際の移行を実行する前に、 移行が予想どおりに機能することを再確認できます。

--reflog
--no-reflog

reflog データを新しいバックエンドへ移行するか、破棄するかを選択します。デフォルトは「移行する」(--reflog)です。

以下のオプション達は git refs verify 用です:

--strict

より厳格なエラー・チェックを有効にします。 これにより、 警告がエラーとして報告されます。 inkgit:git-fsck[1] 参照。

--verbose

参照データベースの一貫性を確認するときに、 おしゃべりにします。

以下のオプション達は git refs list 用です:

<pattern>...

1つ以上のパターン(<pattern>)が指定されている場合、 少なくとも1つのパターンに一致する参照のみが表示されます。 fnmatch(3) を使用するか、 文字通り(lietrally)に書くかです。 文字通りに書いた場合、 完全に一致するか、 先頭からスラッシュ(/)まで一致するかです。

--stdin

パターンのリストは引数リストからではなく標準入力から読み取られます。

--count=<count>

<count> 個の参照を表示して停止(stop)します。

--sort=<key>

並べ替えるフィールド名を <key> とします。 プレフィックス - を使用すると、 値の降順で並べ替えます。 並べ替えるフィールド名を指定しない場合 refname が使用されます。 --sort=<key> オプションは複数回使用できます。 その場合、 最後のキーが主キー(primary key)になります。

--format[=<format>]

表示されている参照とそれが指すオブジェクトを %(フィールド名) によって差し込みする書式文字列。 更に、 リテラル文字列の %% は % とレンダリングされ、 %xx は16進数 xx の値のキャラクター・コードをレンダリングします。 たとえば %00 は \0(NUL)、 %09 は \t(TAB)、 %0a は \n(LF)を差し込みます。

指定無しの場合、 <format> のデフォルトは %(objectname) SPC %(objecttype) TAB %(refname) です。

--color[=<when>]

--format オプションで指定された色を尊重します。 <when> フィールドは always または never または auto のいずれかでなければなりません(<when> の指定が無い場合は、 always が指定されたかのように動作します)。

--shell
--perl
--python
--tcl

指定した場合、 %(fieldname) プレースホルダーを置き換える文字列は、指定のホストプログラム言語に適した文字列リテラルとしてクォートします。これは、直接「評価」(eval)できるスクリプトレットを作成することを目的としています。

--points-at=<object>

指定のオブジェクトを指す参照のみをリストします。

--merged[=<object>]

指定のコミット(指定されていない場合は HEAD)から先端に到達できる参照のみをリストします。

--no-merged[=<object>]

<object> (指定されていない場合は HEAD)から先端に到達でき無い参照のみをリストします。

--contains[=<object>]

<object> (指定されていない場合は HEAD)を含む参照のみをリストします。

--no-contains[=<object>]

<object> (指定されていない場合は HEAD)を含ま無い参照のみをリストします。

--ignore-case

参照の並べ替え(sort)とフィルタリングでは英大文字小文字を区別しません。

--omit-empty

フォーマットが空の文字列に展開されるフォーマット済み参照の後に改行を出力しないでください。

--exclude=<excluded-pattern>

1つ以上の --exclude オプションが与えられている場合、 与えられた <excluded-pattern> パラメーター達とマッチし無い参照のみが表示されます。 マッチングは、 上記 の <pattern> と同じルールを使用して行われます。

--include-root-refs

通常の参照以外のルート参照(root refs)(HEAD と疑似参照)をリストします。

--start-after=<marker>

ページ単位での出力(ページネーション;pagination)を可能にし、 指定されたマーカー(<marker>)(マーカー自身も含めて)までの参照をスキップします。 参照はページ単位での出力中に削除または変更または追加される可能性があることに注意してください。 出力には、 マーカーの辞書順(lexicographically)で後に続く参照のみが含まれます。 出力は、 マーカーよりアルファベット順(alphabetically)で次に来る最初の参照から始まります。 --sort=<key> オプションや --stdin オプション、 または参照を制限するための <pattern> 引数と併用することはできません。

以下のオプション達は git refs optimize 用です:

--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 で得られた参照を引いたものがパックされます。

既知の制限

参照形式の移行については、 現在の形式ではいくつかの既知の制限があります:

  • ワークツリーを持つリポジトリーの移行はできません。

  • 移行の進行中、 リポジトリーへの並列書き込みをブロックする方法はありません。 並列書き込みは一貫性のない移行状態につながる可能性があります。 ユーザーは、 より高いレベルで書き込みをブロックすることが期待されています。 あなたのリポジトリーがスケジュールされたメンテナンスのために登録されている場合、 git-maintenance(1) で最初に登録解除することをお勧めします。

これらの制限は将来的には解除される可能性があります。

GIT

Part of the git(1) suite