Git
English ▾ トピック ▾ 最新バージョン ▾ git-commit-graph は 2.46.0 で最終更新

NAME

git-commit-graph - Gitのコミットグラフファイルの書き込みと検証

SYNOPSIS

git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]
git commit-graph write [--object-dir <dir>] [--append]
			[--split[=<strategy>]] [--reachable | --stdin-packs | --stdin-commits]
			[--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]
			<split-options>

DESCRIPTION

シリアライズされたコミットグラフファイルを管理します。

OPTIONS

--object-dir

パックファイルとコミットグラフファイルの場所として、指定されたディレクトリを使用します。このパラメータは、完全な.gitディレクトリではなく、オブジェクトディレクトリのみを持つ代替の場所を指定するために存在します。コミットグラフファイルは、<dir>/info ディレクトリにあり、パックファイルは <dir>/pack にあると想定されます。ディレクトリを絶対パスに変換できなかった場合、または既知のオブジェクトディレクトリと一致しない場合、git commit-graph ... はゼロ以外のステータスで終了します。

--[no-]progress

進捗表示を明示的にオン/オフにします。どちらも指定されていない場合は、標準エラーが端末に接続されている場合に進捗が表示されます。

COMMANDS

write

パックファイルで見つかったコミットに基づいてコミットグラフファイルを書き込みます。構成オプションcore.commitGraphが無効になっている場合、このコマンドは警告を出力し、コミットグラフファイルを書き込まずに成功を返します。

--stdin-packs オプションを指定すると、指定されたパックインデックス内のオブジェクトのみをウォークして新しいコミットグラフを生成します。(--stdin-commits または --reachable と組み合わせることはできません。)

--stdin-commits オプションを指定すると、1行に1つのOIDを16進数で記述したOIDのリストとしてstdinで指定されたコミットから開始して、コミットをウォークして新しいコミットグラフを生成します。非コミット(直接またはタグを剥がすことで)を解決するOIDは、サイレントに無視されます。形式が間違っているか、存在しないOIDはエラーを生成します。(--stdin-packs または --reachable と組み合わせることはできません。)

--reachable オプションを指定すると、すべての参照から開始してコミットをウォークして、新しいコミットグラフを生成します。(--stdin-commits または --stdin-packs と組み合わせることはできません。)

--append オプションを指定すると、既存のコミットグラフファイルに存在するすべてのコミットが含まれます。

--changed-paths オプションを指定すると、コミットとその最初の親の間で変更されたパスに関する情報を計算して書き込みます。この操作は、大規模なリポジトリで時間がかかる場合があります。これは、git log -- <path>でディレクトリまたはファイルの履歴を取得するためのパフォーマンスを大幅に向上させます。このオプションが指定されている場合、将来のコミットグラフの書き込みでは、このオプションが意図されていると自動的に想定されます。このデータの保存を停止するには、--no-changed-paths を使用します。

--max-new-filters=<n> オプションを指定すると、(--changed-paths が指定されている場合)最大で n 個の新しいブルームフィルタが生成されます。n-1 の場合、制限は適用されません。新しいレイヤーに存在するコミットのみが、この制限に対してカウントされます。以前のレイヤーに対してブルームフィルタを遡及的に計算するには、--split=replace を使用することをお勧めします。commitGraph.maxNewFilters 構成を上書きします。

--split[=<strategy>] オプションを指定すると、コミットグラフが<dir>/info/commit-graphsに保存されている複数のコミットグラフファイルのチェーンとして書き込まれます。コミットグラフレイヤーは、戦略およびその他の分割オプションに基づいてマージされます。コミットグラフにまだ存在しない新しいコミットは、新しい「チップ」ファイルに追加されます。このファイルは、次のマージ条件が満たされた場合に既存のファイルとマージされます

  • --split=no-merge が指定されている場合、マージは実行されず、残りのオプションは無視されます。--split=replace は、既存のチェーンを新しいチェーンで上書きします。ベア --split は、残りのオプションに従います。(コミットグラフのチェーンをマージすると、既存のチェーンが長さ1のチェーンに置き換えられ、最初で唯一の増分にはグラフ全体が含まれることに注意してください)。

  • --size-multiple=<X> が指定されていない場合、X を 2 とします。新しいチップファイルに N 個のコミットがあり、前のチップに M 個のコミットがあり、X 倍の NM より大きい場合、代わりに2つのファイルを1つのファイルにマージします。

  • --max-commits=<M> が正の整数 M で指定されていて、新しいチップファイルに M 個を超えるコミットがある場合、代わりに新しいチップを前のチップとマージします。

    最後に、--expire-time=<datetime> が指定されていない場合、datetime を現在の時刻とします。分割されたコミットグラフを書き込んだ後、変更時刻が datetime より古い未使用のコミットグラフをすべて削除します。

verify

コミットグラフファイルを読み取り、その内容をオブジェクトデータベースと照合して検証します。破損したデータをチェックするために使用します。

--shallow オプションを指定すると、分割されたコミットグラフのチェーン内の先端コミットグラフファイルのみがチェックされます。

EXAMPLES

  • ローカルの .git ディレクトリのパックされたコミットのコミットグラフファイルを書き込みます。

    $ git commit-graph write
  • <pack-index> 内のコミットを使用して現在のコミットグラフファイルを拡張し、コミットグラフファイルを書き込みます。

    $ echo <pack-index> | git commit-graph write --stdin-packs
  • 到達可能なすべてのコミットを含むコミットグラフファイルを書き込みます。

    $ git show-ref -s | git commit-graph write --stdin-commits
  • 現在のコミットグラフファイル内のすべてのコミットと、HEAD から到達可能なコミットを含むコミットグラフファイルを書き込みます。

    $ git rev-parse HEAD | git commit-graph write --stdin-commits --append

CONFIGURATION

このセクションのこの行より下のすべては、git-config[1] ドキュメントから選択的に含まれています。内容はそこに記載されているものと同じです

commitGraph.generationVersion

コミットグラフファイルの書き込みまたは読み取り時に使用する世代番号のバージョンタイプを指定します。バージョン1が指定されている場合、修正されたコミット日付は書き込まれたり読み取られたりしません。デフォルトは2です。

commitGraph.maxNewFilters

git commit-graph write--max-new-filters オプションのデフォルト値を指定します(c.f., git-commit-graph[1])。

commitGraph.readChangedPaths

非推奨。trueの場合はcommitGraph.changedPathsVersion=-1と同等であり、falseの場合はcommitGraph.changedPathsVersion=0と同等です。(commitGraph.changedPathVersionも設定されている場合は、commitGraph.changedPathsVersionが優先されます。)

commitGraph.changedPathsVersion

Gitが読み書きする変更パスブルームフィルタのバージョンを指定します。-1、0、1、または2である可能性があります。1より大きい値は、まだそれらのバージョンを理解していない古いバージョンのGitと互換性がない可能性があることに注意してください。混合バージョン環境で操作する場合は注意してください。

デフォルトは-1です。

-1の場合、Gitはリポジトリ内の変更されたパスのブルームフィルタのバージョンを使用し、存在しない場合はデフォルトで1になります。

0の場合、Gitはブルームフィルタを読み取らず、書き込むように指示された場合はバージョン1のブルームフィルタを書き込みます。

1の場合、Gitはバージョン1のブルームフィルタのみを読み取り、バージョン1のブルームフィルタを書き込みます。

2の場合、Gitはバージョン2のブルームフィルタのみを読み取り、バージョン2のブルームフィルタを書き込みます。

詳細については、git-commit-graph[1] を参照してください。

FILE FORMAT

gitformat-commit-graph[5] を参照してください。

GIT

git[1] スイートの一部

scroll-to-top