git submoduleの自分用メモ書き
git submoduleはほかのレポジトリの「特定コミット」を自分の内部の構成要素にする仕組みで、大きいものを作るときや、各要素が複雑enoughな時に役立つっぽい。
基本の理解
- submodule内のレポと本体のレポは別物
- 本体としてはsubmoduleのコミット番号のみを記憶している
- submoduleを直接修正pushしてらsubmoduleのレポだけが更新されるが、本体は何の更新も見えない
- submodule更新してから、submoduleのディレクトリの外でgit submodule updateすると、本体レポの記憶しているコミット番号が更新される
これ良かったね
基本コマンド
git submodule update --recursive
これでトラックするsubmoduleのコミット状況を更新かな?
git submodule foreach git pull origin master
foreachコマンドはその名の通り、同じ処理を繰り返し順番にやってくれる。
これでやれるのは各submoduleにおいてpull origin masterをするってこと
git pull origin [specific-commit identifier]
各submoduleのディレクトリにおりて、そこで上記の通常pullを行うと、そのsubmoduleについては特定のコミットを落としてくることができる。