88

git checkout でブランチを切り替えるとき、ほとんどの場合、サブモジュールを更新したいと思うでしょう。

  • 切り替え後にサブモジュールを更新したくないのはどのような状況ですか?
  • これが git checkout によって自動的に行われた場合、何が壊れますか?

例で更新:

  • ブランチ A には 3852f1 にサブモジュール S があります
  • ブランチ B には fd72d7 にサブモジュール S があります

ブランチ A で git checkout B を実行すると、サブモジュール S が 3852f1 (変更された S) にあるブランチ B の作業コピーが作成されます。git submodule update は fd72d7 で S をチェックアウトします。

4

3 に答える 3

27

サブモジュールが自動的に更新されないことは、Git の開発目標に沿っていると思います。Git は分散モードで動作することを意図しており、明示的に指示しない限り、ローカル以外のリポジトリに接続できるとは想定していません。Git がサブモジュールを自動更新しないことは、そのように考えると予想される動作です。

そうは言っても、これらのサブモジュールを常にプルする必要があり、それらのサブモジュールから別のローカルリポジトリに分岐しないことがわかっている場合は、後でそれらを自動的に更新しても何も壊れないはずですチェックアウト。

于 2009-12-14T09:13:34.343 に答える