IntellijでGit Submoduleを使ってみる

2021.10.18

はじめに

データアナリティクス事業本部のkobayashiです。

今進めている案件でたまたまGitのSubmoduleを使う機会があり、自分のメインのIDEであるIntellijでどのように操作すればいいかを調べたので簡単にまとめます。

リモート Git リポジトリと同期する (フェッチ、プル、更新) | IntelliJ IDEA

Gitのサブモジュール

Gitのサブモジュールを使うことである1つのリポジトリ内に別のリポジトリを追加するすることができます。これによりメインのプロジェクトで行っている開発で別のプロジェクトをライブラリとして使う場合などに有効な機能になります。

コミットログをそれぞれのプロジェクトで管理できるので便利です。

IntellijでGit Submoduleを扱ってみる

ではその機能をIntellijで使って見たいと思います。

GitHubに最適なリポジトリがあったので以下をサンプルプロジェクトとして扱ってみます。

上記を取り込んで以下のディレクトリ構成を作ってみたいと思います。

git_submodule_sample/
└── example-submodule <-----メインプロジェクト
    ├── README.md
    ├── app.js
    ├── example-dependency <-----サブモジュール
    │   ├── README.md
    │   ├── css
    │   │   └── default.css
    │   ├── index.html
    │   └── js 
    ├── file1.md
    └── file2.md

手順1)Intellijで空のプロジェクトを作成し、Terminalを開いてメインのリポジトリをGitHubからCloneする

git clone https://github.com/githubtraining/example-submodule.git

手順2)同じくTerminalでSubmoduleを追加する。

 git submodule add https://github.com/githubtraining/example-dependency.git

この時点でコミットログを確認するとメインのプロジェクトだけしか出てこないのでIntellijのVersion Controlにでサブモジュールのプロジェクトを追加します。

手順3)Preferences > Version Controlでサブモジュールのディレクトリを追加する。

ここまでの操作でIntellijでサブモジュールが認識された状態となりました。Intellijでコミットログを確認すると以下の様にメインプロジェクトとサブモジュールのコミットログが非常にわかりやすく表示されています。

この状態になればリモート Git リポジトリと同期する (フェッチ、プル、更新) | IntelliJ IDEA にあるようにサブモジュール参照がルートリポジトリで変更された場合、または新しいサブモジュールが追加された場合に自動的に更新されるようになります。

まとめ

IntellijでGit Submoduleを取り扱う方法を簡単にまとめました。開発規模が大きくなってくるとプロジェクト内に別のプロジェクトをライブラリとして使う場面もあるかと思います。その際はIntellijで上記の設定を行えば非常に便利です。