英語 ▾ トピック ▾ 最新バージョン ▾ git-commit-graph は 2.46.0 で最終更新されました

名前

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

概要

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>

説明

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

オプション

--object-dir

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

--[no-]progress

明示的にプログレス表示をオン/オフします。どちらも指定されていない場合、標準エラーがターミナルに接続されていればプログレス表示が行われます。

コマンド

write

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

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

--stdin-commits オプションを使用すると、標準入力で1行に1つのOIDの16進数リストとして指定されたコミットから開始してコミットを辿ることで、新しいコミットグラフを生成します。非コミットに解決されるOID (直接的またはタグを剥がすことによって) は黙って無視されます。形式が不正な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 に保存します。コミットグラフのレイヤーは、戦略と他の分割オプションに基づいてマージされます。コミットグラフにまだ存在しない新しいコミットは、新しい「先端 (tip)」ファイルに追加されます。このファイルは、以下のマージ条件が満たされた場合に既存のファイルとマージされます。

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

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

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

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

verify

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

--shallow オプションを使用すると、分割コミットグラフのチェーンの先端コミットグラフファイルのみをチェックします。

  • ローカルの .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

設定

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

commitGraph.generationVersion

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

commitGraph.maxNewFilters

git commit-graph write--max-new-filters オプションのデフォルト値を指定します(参照: 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] を参照してください。

ファイル形式

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

GIT

git[1] スイートの一部

scroll-to-top