リポジトリに親子関係を持たせることができ、子リポジトリを「submodule」と言う。
子リポジトリを親リポジトリのsubmodule化すると、親リポジトリのルートディレクトリに子リポジトリのフォルダが作成される。ただし、submodule化した時点のコミットポイントなので、子リポジトリに新たにpushした変更点は親リポジトリのsubmoduleに自動的には繁栄されない。
submoduleを追加する
submoduleに設定するリポジトリのURLをGitHubから取得し、親となるリポジトリのディレクトリでコマンドを実行する。
git submodule add https://github.com/...
submoduleの一覧を確認する
submoduleの一覧は.gitmodulesというファイルに書き込まれています。
cat .gitmodules
submoduleを更新する
submoduleのコミットポイントは手動で更新しないと最新状態にならない。
git submodule foreach git pull origin master
submoduleを初期化する
submoduleのある親リポジトリを初めてクローンしたときは、子リポジトリのフォルダの中身は空のため初期化する必要がある。
※submoduleのフォルダでコマンド実行
git submodule init
git submodule update
clone時にsubmoduleの初期化をしてしまう
--recurse-submodules
を付ける。
git clone --recurse-submodules https://github.com/...