submoduleを管理する

リポジトリに親子関係を持たせることができ、子リポジトリを「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/...
タグ: