日本語 ▾ トピック ▾ 最新バージョン ▾ gitmodules は最終更新が2.42.0

名前

gitmodules - サブモジュールのプロパティの定義

概要

$GIT_WORK_TREE/.gitmodules

説明

Gitワーキングツリーのトップレベルディレクトリにある.gitmodulesファイルは、git-config[1]の要件に合致する構文を持つテキストファイルです。

このファイルにはサブモジュールごとに1つのサブセクションが含まれ、サブセクションの値はサブモジュールの名前です。名前は、git submodule add--nameオプションでカスタマイズされていない限り、サブモジュールが追加されたパスに設定されます。各サブモジュールセクションには、以下の必須キーも含まれます。

submodule.<name>.path

Gitワーキングツリーのトップレベルディレクトリからの相対パスで、サブモジュールがチェックアウトされる予定のパスを定義します。パス名は/で終わってはいけません。すべてのサブモジュールパスは、.gitmodulesファイル内で一意である必要があります。

submodule.<name>.url

サブモジュールリポジトリをクローンできるURLを定義します。これは、git-clone[1]に直接渡せる絶対URLであるか、(./または../で始まる場合) スーパートプロジェクトのオリジンリポジトリからの相対パスのいずれかです。

さらに、いくつかのオプションキーがあります。

submodule.<name>.update

指定されたサブモジュールのデフォルトの更新手順、つまりスーパートプロジェクトでgit submodule updateコマンドによってサブモジュールがどのように更新されるかを定義します。これはgit submodule initによって同じ名前の設定変数を初期化するためにのみ使用されます。ここでの許可される値はcheckoutrebasemerge、またはnoneですが、!commandは許可されません (セキュリティ上の理由)。詳細については、git-submodule[1]updateコマンドの説明を参照してください。

submodule.<name>.branch

上流のサブモジュールでの更新を追跡するためのリモートブランチ名。このオプションが指定されていない場合、デフォルトはリモートのHEADになります。.の特殊な値は、サブモジュール内のブランチ名が現在のリポジトリ内の現在のブランチと同じ名前であることを示すために使用されます。詳細については、git-submodule[1]--remoteドキュメントを参照してください。

submodule.<name>.fetchRecurseSubmodules

このオプションは、このサブモジュールの再帰的なフェッチを制御するために使用できます。このオプションがスーパートプロジェクトの.git/config内のサブモジュールのエントリにも存在する場合、そこの設定が.gitmodulesで見つかった設定を上書きします。両方の設定は、git fetchおよびgit pull--[no-]recurse-submodulesオプションを使用することでコマンドラインから上書きできます。

submodule.<name>.ignore

git statusとdiffファミリーがサブモジュールを修正済みとして表示する条件を定義します。以下の値がサポートされています。

all

サブモジュールは決して変更されたと見なされません (ただし、ステージングされた場合はstatusおよびcommitの出力に表示されます)。

dirty

サブモジュールのワークツリーへのすべての変更は無視され、サブモジュールのHEADとそのスーパートプロジェクトの記録された状態との間のコミットされた差分のみが考慮されます。

untracked

サブモジュール内の追跡されていないファイルのみが無視されます。コミットされた差分と追跡されているファイルへの変更は表示されます。

none

サブモジュールへの変更は何も無視されず、コミットされた差分、追跡されているファイルおよび追跡されていないファイルへのすべての変更が表示されます。これがデフォルトオプションです。

このオプションがスーパートプロジェクトの.git/config内のサブモジュールのエントリにも存在する場合、そこの設定が.gitmodulesで見つかった設定を上書きします。

両方の設定は、--ignore-submodulesオプションを使用することでコマンドラインから上書きできます。git submoduleコマンドはこの設定の影響を受けません。

submodule.<name>.shallow

trueに設定されている場合、このサブモジュールのクローンは、ユーザーが明示的に非シャロークローンを要求しない限り、シャロークローン (履歴深度1) として実行されます。

注記

Gitは、ワーキングツリー内の.gitmodulesファイルがシンボリックリンクであることを許可せず、そのようなツリーエントリのチェックアウトを拒否します。これにより、ファイルがインデックスまたはツリーからアクセスされる場合とファイルシステムからアクセスされる場合とで動作の一貫性が保たれ、Gitがファイルの内容のセキュリティチェックを確実に強制するのに役立ちます。

以下の.gitmodulesファイルを考慮してください。

[submodule "libfoo"]
	path = include/foo
	url = git://foo.com/git/lib.git

[submodule "libbar"]
	path = include/bar
	url = git://bar.com/git/lib.git

これは、libfoolibbarの2つのサブモジュールを定義しています。これらはinclude/fooinclude/barのパスにチェックアウトされると予想され、両方のサブモジュールについて、サブモジュールをクローンするために使用できるURLが指定されています。

GIT

git[1]スイートの一部

scroll-to-top