1. ホーム
  2. git

[解決済み] サブモジュールを最新のコミットに更新する

2022-03-15 14:45:28

質問

プロジェクトAはライブラリで、プロジェクトBで使用されています。

AとBのプロジェクトは両方ともgithub上に別々のリポジトリを持っていますが、Bの内部にはAのサブモジュールがあります。

私は、リポジトリAにあるライブラリのいくつかのクラスを編集し、リモートリポジトリにプッシュしたので、ライブラリ(リポジトリA)は更新されます。

この更新は "reference" (サブモジュール)には反映されません。

解決方法は?

サブモジュールのディレクトリを入力してください。

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

を使用して、サブモジュールを最新のリモートコミットに更新します。ほとんどの場合、これは便利でしょう。