Git は、本来あるべきことを正確に実行しています。git submodule update
サブモジュールを、親リポジトリの現在のコミットがサブモジュールの位置を指定するものに設定します。このようにして、別のブランチ、古いコミットまたはタグをチェックアウトしてから実行するgit submodule update
と、サブモジュールがその参照が期待するものに設定されるため、ソリューション全体で依存関係が満たされます。
あなたがする必要があるのは:
cd mysubmoduledir
git fetch
git checkout master # or any other branch that you need the latest of
git merge origin/master
cd - # go back to the top repo
git status # should show that your submodule changed
git add mysubmoduledir
git commit -m "Updated my solution to use latest sub project."
短いバージョンは次のとおりです。
cd mysubmoduledir
git pull # assumes you are already on the branch you need to be on
cd -
git commit -am "Updated submodule" # assumes you had no other modified files
「更新」という言葉は、このサブモジュール コマンドに最適ではありません。これは、「親リポジトリのコミットが期待するコミットにサブモジュールを向ける」ことを意味します。
サブモジュールを別のコミット (最新である必要はありません) に更新するには、そのディレクトリに cd し、通常の git リポジトリのように操作して、現在のコミットが目的のものになるようにしてから、戻ってこの変更をコミットする必要があります。トップレベルのレポ。