メインの Git リポジトリに Git サブモジュールがあります。私の理解では、メイン リポジトリには SHA 値 (どこかに...) が保存されており、それが「リンク」されているサブモジュールの特定のコミットを指しています。
サブモジュールに移動して、 と入力しましたgit checkout some_other_branch
。どのコミットから来たのかわかりません。
メインリポジトリとサブモジュールが再び同期されるように、そのポインタを元に戻したいと思います。
私の最初の(おそらく素朴な)直感は、「それは他のすべてには機能するようだ」というものでしたgit reset --hard
。驚いたことに、このシナリオでは機能しませんでした。
git diff
そこで、 と入力して、サブモジュール ポインターが以前に持っていた SHA ID をメモし、サブモジュールに移動すればいいことがわかりましたgit checkout [SHA ID]
... しかし、もっと簡単な方法があるはずですよね?
私はまだ git サブモジュールについて学習中なので、知らない概念を表す言葉があれば遠慮なく用語を訂正してください。
ベストアンサー1
サブモジュールを更新して、親リポジトリが想定しているものと同期させたいとします。そのためには、更新コマンドを使用します。
サブモジュールのマニュアルページから:
登録されたサブモジュールを更新します。つまり、不足しているサブモジュールを複製し、 含まれているインデックスで指定されたコミットをチェックアウトする リポジトリ。これにより、サブモジュールHEADが切り離されます。 --rebase または --merge が指定されているか、キー submodule.$name.update リベースまたはマージに設定されています。
これを実行すると、すべてうまくいくはずです:
git submodule update --init
すべてのサブモジュールを再帰的に処理するためのフラグを追加することもできます--recursive
。