日本語 ▾ トピック ▾ 最新バージョン ▾ 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 によってのみ使用されます。許可される値は、checkoutrebasemergenone ですが、!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