git_submodule
似たようなのに git subtree merge もあるがこっちは二重管理的な感じなので使うことはなさそう(子側のを親側でも管理する感じ、ごちゃごちゃになると思う)
add
init/update
git submodule init
でローカルの設定ファイルを初期化し、次に
git submodule update
でプロジェクトからのデータを取得し、親プロジェクトで指定されている適切なコミットをチェックアウトします。
上流の変更の取り込み
まずはサブモジュールの使用例で一番シンプルなモデルを見ていきます。それは、サブプロジェクトをただ単に使うだけ、というモデルです。上流の更新はときどき取り込みたいけれど、チェックアウトした内容を変更したりはしない、という使い方になります。
サブモジュールが更新されているかどうかを調べるには、サブモジュールのディレクトリで git fetch
を実行します。併せて git merge
で上流のブランチをマージすれば、チェックアウトしてあるコードを更新できます。
ここでメインプロジェクトのディレクトリに戻って git diff --submodule
を実行してみてください。サブモジュールが更新されたこと、どのコミットがサブモジュールに追加されたかがわかるでしょう。なお、git diff
の --submodule
オプションを省略したい場合は、設定項目 diff.submodule
の値に “log” を指定してください。
この状態でコミットしておけば、他の人がサブモジュールを更新したときに新しい内容が取り込まれるようになります。