2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.gitmodules ってなに?submoduleと一緒に簡単説明!

Last updated at Posted at 2025-12-12

はじめに

いろんなリポジトリを見ていたら .gitmodules というファイルを見つけました。
名前から Git 関連のファイルなのでしょうが、使用用途はいったいなんなのでしょうか。

.gitmodules とは何か

調べたところ、これは Git submodule(サブモジュール)用の設定ファイルだったようです。
.gitmodules には、サブモジュールの配置場所と参照先リポジトリが記録されます。

例としては以下のようになっています。

.gitmodules
[submodule "libs/lib"]
	path = libs/lib
	url = https://github.com/example/lib.git

このファイルがあることで、他の人がリポジトリをクローンした際にも、同じ submodule 構成を再現できるようになるそうです。

そもそも submodule とは

submodule は、別の Git リポジトリを、自分のリポジトリの一部として取り込む仕組みです。

例えば以下のような構成があったとします。

tree.txt
example-project/
├── src/
├── libs/
│   └── common-lib 
│       └── 色々なファイル

そのとき common-lib が独立した別のリポジトリであったなら、以下のコマンドを使って submodule を追加します。

git submodule add https://github.com/example/common-lib.git libs/common-lib

ではクローンしたときはどうすればいい?

リポジトリをクローンしたら、中に submodule が含まれていることがあります。
この場合、普通にクローンしただけでは中身を使うことができません。

先ほどの例で考えましょう。
クローン直後のフォルダ構成は以下のように空っぽのファイルが生成されます。

tree.txt
example-project/
├── src/
├── libs/
│   └── common-lib (そもそもファイルの中身がない。)

そのため、以下のコマンドを使用して submodule を取得しましょう。
なお、 --recursive を使うことによってネストされたサブモジュールも再帰的に取得します。

git submodule update --init --recursive

これをすることによってようやく全て完了するというわけです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?