ライブラリであるプロジェクト A があり、それがプロジェクト B で使用されています。
プロジェクト A と B は両方とも github 上に別々のリポジトリを持っていますが、B 内には A のサブモジュールがあります。
リポジトリ A にあるライブラリのいくつかのクラスを編集し、リモート リポジトリにプッシュしたので、ライブラリ (リポジトリ A) が更新されました。
これらの更新は「参照」(サブモジュール)に反映されません。サブモジュールは以前のコミットを参照します。git でサブモジュールを更新するにはどうすればよいでしょうか?
ベストアンサー1
サブモジュールディレクトリを入力します:
cd projB/projA
プロジェクト A からリポジトリをプルします (親プロジェクト B の git ステータスは更新されません)。
git pull origin master
ルートディレクトリに戻って更新を確認します。
cd ..
git status
サブモジュールが以前に更新されていた場合は、以下のように表示されます。
# Not currently on any branch.
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: projB/projA (new commits)
#
次に、更新をコミットします。
git add projB/projA
git commit -m "projA submodule updated"
アップデート
@paulが指摘したように、git 1.8以降では、
git submodule update --remote --merge
サブモジュールを最新のリモートコミットに更新します。ほとんどの場合、便利です。