サブモジュールを登録する
自分の gitリポジトリで、ターミナルから下記のようなコマンドを実行する。
git submodule add [サブモジュールのリポジトリURL] [サブモジュールのディレクトリ]
例えば、GitHubにある https://github.com/lipoyang/SPI_NeoPixel というライブラリを、自分のリポジトリ内の SPI_NeoPixel というサブディレクトリに登録したい場合は下記のコマンドを実行する。
git submodule add https://github.com/lipoyang/SPI_NeoPixel.git SPI_NeoPixel
自分のリポジトリをGitHubにプッシュした場合、サブモジュールは下記のように表示される。
@以降の16進数が、参照しているコミットのID(の先頭7桁)である。
サブモジュールのコミットIDは下記のコマンドで確認できる。
git submodule status 6837425f1c7afb3c83373b4b84eb9b43be79ba5a SPI_NeoPixel (heads/main)
サブモジュールを削除する
下記の要領で削除できる。
git submodule deinit SPI_NeoPixel git rm -f SPI_NeoPixel
サブモジュールを含むリポジトリをクローンする
サブモジュールを含むリポジトリをふつうにクローンしても、サブモジュールの中身はクローンされない。
サブモジュールもクローンしたいときは下記のように再帰オプションを指定する。
git clone --recursive [クローンしたいリポジトリ]
SourceTreeを使う場合は、クローンの「詳細オプション」で「サブモジュールに再帰」にチェックする。
ふつうにクローンしてしまった後でサブモジュールをクローンするには下記のコマンドを実行する。
git submodule update --init --recursive
サブモジュールのバージョンを変える
サブモジュールのディレクトリは親リポジトリとは別個のgitリポジトリになっている。
サブモジュールの操作は、サブモジュールのディレクトリに降りてgitコマンドを実行する。
SourceTreeを使う場合は、左端の欄の「サブモジュール」からサブモジュールのリポジトリを開くことができる。
コミットIDを指定してバージョンを変えるには下記のコマンドを実行する。
git reset --hard [コミットid]
SourceTreeを使う場合は、Historyで所望のコミットを選択して「現在のブランチをこのコミットまでリセット」をクリックし、「使うモード」は「Hard」を選択する。
そのうえで、親リポジトリに戻って変更をコミットする。
参考