SYNOPSIS
$GIT_WORK_TREE/.gitmodules
DESCRIPTION
Git作業ツリーの最上位ディレクトリにある .gitmodules
ファイルは、 git-config(1) の構文を持つテキストファイルです。
このファイルには、サブモジュールごとに1つのサブセクションが含まれており、サブセクションの値はサブモジュールの名前です。名前は、 git
submodule
add
の --name
プションでカスタマイズされていない限り、サブモジュールが追加されたパス名として使用されます。各サブモジュールセクションには、以下の必須キーも含まれています:
- submodule.<name>.path
-
サブモジュールがチェックアウトされると予想される、Git作業ツリーの最上位ディレクトリを基準にしたパスを定義します。 パス名は
/
で終わらせてはいけません。 すべてのサブモジュールパスは、.gitmodules
ファイル内で一意である必要があります。 - submodule.<name>.url
-
サブモジュールリポジトリのクローンを作成できるURLを定義します。 これは、 git-clone(1) に渡す準備ができている絶対URLか、 (
./
または..
/
で始まる場合)スーパープロジェクトの、元のリポジトリ(superproject’s origin repository)から相対的な場所のいずれかです。
さらに、いくつかのオプションのキーがあります:
- submodule.<name>.update
-
名前付きサブモジュールのデフォルトの更新手順を定義します。 つまり、 スーパープロジェクトで
git
submodule
update
コマンドによってサブモジュールがどのように更新されるかを指定します。 この設定は、git
submodule
init
によって同名の構成変数を初期化する際にのみ使用されます。 許可される値はcheckout
またはrebase
またはmerge
またはnone
です。 しかし、 セキュリティ上の理由から !command は使用できません。 詳細については、 git-submodule(1) の update コマンドの説明を参照してください。 - submodule.<name>.branch
-
上流サブモジュールの更新を追跡するためのリモートブランチ名。このオプションが指定されていない場合のデフォルトは、リモートのHEADになります。 別な値 . は、サブモジュール内のブランチ名が現在のリポジトリ内の現在のブランチ名と同一でなければならないことを示すために使用されます。詳細については、 git-submodule(1) の
--remote
ドキュメントを参照してください。 - submodule.<name>.fetchRecurseSubmodules
-
このオプションは、このサブモジュールの再帰的フェッチを制御するために使用できます。このオプションがスーパープロジェクトの
.git/config
のサブモジュールのエントリにも存在する場合、そこでの設定は.gitmodules
にある設定を上書きします。コマンドラインで両方の設定を上書きするには、--
[no-
]recurse-submodules
オプションをgit
fetch
とgit
pull
で使用します。 - submodule.<name>.ignore
-
どのような状況で
git
status
とdiffファミリーがサブモジュールを変更済みとして表示するかを定義します。指定できるのは以下の値です:- all
-
サブモジュールは変更されたものと見なされることは決してありません(それでも、 ステータスの出力に表示され、 ステージングされたときはコミットします)。
- dirty
-
サブモジュールのワークツリーに対するすべての変更は無視され、 サブモジュールの
HEAD
とスーパープロジェクトに記録された状態との間のコミットされた差分のみが考慮されます。 - untracked
-
サブモジュール内の非追跡ファイルのみが無視されます。 コミットされた差分および追跡中のファイルへの変更は表示されます。
- none
-
サブモジュールの変更は一切無視されず、 かつ、 コミットされた差分や、 追跡中のファイルおよび非追跡のファイルへの変更すべてが表示されます。 これがデフォルトのオプションです。
このオプションがスーパープロジェクトの
.git/config
のサブモジュールのエントリにも存在する場合、そこでの設定は.gitmodules
にある設定を上書きします。--ignore-submodules
オプションを使用すると、コマンドラインで両方の設定を上書きできます。git
submodule
コマンドは、この設定の影響を受けません。 - submodule.<name>.shallow
-
trueに設定すると、ユーザーが明示的に非浅いクローン(non-shallow clone)を要求しない限り、このサブモジュールのクローンは浅いクローン(shallow clone)(履歴の深さ1)として実行されます。
NOTES
Gitは、作業ツリー内の .gitmodules
ファイルをシンボリックリンクにすることを許可せず、そのようなツリーエントリのチェックアウトを拒否します。これにより、ファイルがインデックスまたはツリーからアクセスされたときとファイルシステムからアクセスされたときの動作の一貫性が保たれ、Gitがファイルの内容のセキュリティチェックを確実に実施できるようになります。
EXAMPLES
以下の .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
これは、libfoo
と libbar
の2つのサブモジュールを定義します。 これらはパス include/foo
と include/bar
でチェックアウトされることが期待されており、両方のサブモジュールに対して、サブモジュールのクローン作成に使用できるURLが指定されています。
SEE ALSO
GIT
Part of the git(1) suite