# Git サブモジュール

# 1 概要

Git サブモジュールは、ひとつの Git リポジトリの中に別の Git リポジトリを組み込む機能です。共通のフレームワークやライブラリを複数のプロジェクトで共有しつつ、それぞれのバージョンを独立して管理できます。

このリポジトリは `doxyfw`・`docsfw`・`testfw`・`makefw` の 4 つのサブモジュールを使用しています。これらはドキュメント生成・テスト・ビルドのフレームワークとして機能し、メインリポジトリから独立したリポジトリとして管理されています。サブモジュールを理解することで、フレームワークの更新と本体の更新を分離して扱えるようになります。

通常の `git clone` ではサブモジュールの内容は取得されません。サブモジュールを含むリポジトリを正しく扱うには、専用のコマンドが必要です。

# 2 習得目標

- サブモジュールとは何か、使う理由を説明できる
- `git clone --recurse-submodules` でサブモジュールごとクローンできる
- `git submodule update --init --recursive` でサブモジュールを初期化できる
- `git submodule update --remote` でサブモジュールを最新版に更新できる
- `.gitmodules` ファイルの内容を読み、サブモジュールの設定を理解できる
- サブモジュールの変更をメインリポジトリにコミットできる

# 3 学習マテリアル

## 3.1 公式ドキュメント

- Pro Git - Git ツール: サブモジュール (日本語) - サブモジュールの公式解説。基本操作から注意点まで詳細に説明
- GitHub Docs - サブモジュールについて - GitHub 公式の補足説明

## 3.2 チュートリアル・入門

- サルでも分かるGit入門 - サブモジュール - 図解入りの入門説明

# 4 このリポジトリとの関連

## 4.1 使用箇所 (具体的なファイル・コマンド)

このリポジトリの `.gitmodules` に定義されたサブモジュールは以下の通りです。

サブモジュール一覧
サブモジュール | パス | 役割
--- | --- | ---
`doxyfw` | `doxyfw/` | Doxygen ドキュメント生成フレームワーク
`docsfw` | `docsfw/` | Markdown 発行フレームワーク (Pandoc)
`testfw` | `testfw/` | Google Test テストフレームワーク
`makefw` | `makefw/` | Make ビルドフレームワーク

基本的な操作コマンド:

    git clone --recurse-submodules <URL>

    git submodule update --init --recursive

    git submodule update --remote

    git submodule status

## 4.2 関連ドキュメント

- Git 基礎 - Git の基本操作
- GitHub ワークフロー - チーム開発のワークフロー