結論
Git リポジトリ main と sub を以下のディレクトリ構造にしたい時は
main/ <- Git で管理
|--- sub/ <- Git で管理
|--- README.md
|--- README.md
以下のコマンドを打ちます。
$ cd main
$ git submodule add https://github.com/<ユーザ名>/sub.git sub
git submodule を使うことにした経緯
現在、深層学習を用いた自然言語処理に関する研究に取り組んでいます。
Python でコードを書いていて、Git リポジトリ research を以下のディレクトリ構造にしていました。
ちなみに、cookiecutter のデータサイエンス用テンプレート (https://github.com/drivendata/cookiecutter-data-science) を参考にしています。
research/
|--- data/
|--- models/
|--- notebooks/
|--- result/
|--- src/
ある日、教授から API として使えるようにしてくれとデプロイを頼まれました。
Flask を使おうと思い、以下のディレクトリ構造を考えました。
deploy/
|--- config/
|--- flask/
|--- models/
|--- src/
deploy/ を Git で管理しようと思うとともに、research/src/ と deploy/src/ を共有したいと思いました。
つまり、Git リポジトリ research の下のディレクトリ src/ を Git で管理したいと思いました。
「git 下 git」 と調べても有効な情報は得られませんでした。(「ディレクトリの下」と言いませんか?)
「git 中 git」 と調べると「Git submodule の基礎」(https://qiita.com/sotarok/items/0d525e568a6088f6f6bb) という記事が見つかりました。
非常に分かりやすい記事でした。
記事を読み、以下の手順を踏みました。
1. research/src/ を Git リポジトリとして登録
2. deploy/src/ を除いた deploy/ を Gitリポジトリとして登録
3. 以下のコマンドを打つ
$ cd deploy
$ git submodule add https://github.com/<ユーザ名>/src.git src
これで research/src/ と deploy/src/ の一方を編集しても、Git で簡単にもう一方に反映することができるようになりました。
めでたしめでたし。