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 submodul eupdate
コマンドによってサブモジュールが更新される方法を定義します。これは、同一名称の構成変数を初期化するためにgit submodule init
によってのみ使用されます。 ここで許可される値は、「checkout」、「rebase」、「merge」、「none」です。 それらの意味については、 git-submodule(1) の「update」コマンドの説明を参照してください。セキュリティ上の理由から、「!command」形式は受け入れられません。 - 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
-
The submodule will never be considered modified (but will nonetheless show up in the output of status and commit when it has been staged).
- dirty
-
All changes to the submodule’s work tree will be ignored, only committed differences between the
HEAD
of the submodule and its recorded state in the superproject are taken into account. - untracked
-
Only untracked files in submodules will be ignored. Committed differences and modifications to tracked files will show up.
- none
-
No modifications to submodules are ignored, all of committed differences, and modifications to tracked and untracked files are shown. This is the default option.
このオプションがスーパープロジェクトの
.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