Git submoduleで外部リポジトリを参照する

submoduleは現在のリポジトリに外部のリポジトリをサブディレクトリとして取り込み、参照する仕組みです。

TortoiseGit でのサブモジュール追加方法

  1. メインモジュールのフォルダ内で右クリック
  2. TortoiseGit>サブモジュールの追加 git-submodule-add
  3. リポジトリに参照したいリポジトリを設定
  4. パスにサブモジュールを取得するフォルダを指定
  5. OKボタン git-submodule-add git-submodule-add
  6. メインモジュール側でコミット、プッシュします

Git コマンド

同様のことをGitコマンドで行う場合は以下のようになります。

$ git submodule add /{パス}/mySubmodule.git mySubmodule
$ git commit -m "add submodule"
$ git push origin master

メインモジュールからサブモジュールをコミットする

メインモジュール内で参照しているサブモジュールを更新し、リモートのサブモジュールも更新したい場合の操作です。

  1. サブモジュールのフォルダを右クリック
  2. Git サブモジュールをコミット Gitサブモジュールをコミット
  3. プッシュ

サブモジュール登録後のメインモジュールをクローンする際の作業

別の作業者がメインモジュールをクローンした場合、mySubmoduleフォルダの中が空になっています。クローンした環境ごとにサブモジュールの取得が必要です。

git-submodule-sync
  1. クローンしたメインモジュールのフォルダを右クリック
  2. Git 同期 git-submodule-sync
  3. サブモジュールを更新ボタン git-submodule-sync git-submodule-sync

成功するとサブモジュールにファイルが格納されます。しかし、この段階では、サブモジュールのバージョンはメインモジュールに追加した時点のバージョンになっています。サブモジュール側を最新にしたい場合はサブモジュールのフォルダでプルしてください。

上記手順でサブモジュール側を最新にしても、再度メインモジュール側で「Git 同期 > サブモジュールを更新ボタン」すると登録時のサブモジュールに戻るので注意してください。

メインモジュールが参照するサブモジュールのバージョンを更新する

サブモジュールを更新したときに、メインモジュール側の参照バージョンも更新する方法です。

  1. メインモジュールのフォルダを右クリック
  2. Git コミット git-submodule更新
  3. コミットボタン git-submodule更新
  4. プッシュ

これでリポジトリの情報は更新されますが、そのままプルをしてもサブモジュールは更新されません。そのため、以下の手順が必要です。もしくは前述のようにサブモジュール側でプルします。

  1. クローンしたフォルダを右クリック
  2. Git 同期
  3. サブモジュールを更新ボタン

これでサブモジュールが更新されます。

このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です