Git
英語 ▾ トピック ▾ 最新バージョン ▾ 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]のリモートドキュメントを参照してください。

submodule.<name>.fetchRecurseSubmodules

このオプションは、このサブモジュールの再帰的なフェッチを制御するために使用できます。このオプションがスーパープロジェクトの.git/configのサブモジュールのエントリにも存在する場合、そこにある設定が.gitmodulesにある設定よりも優先されます。両方の設定は、git fetchgit 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