2015-11-16 25 views

答えて

25

Gitは、サブモジュールに関する情報を2か所に格納します。最初は.gitmodulesというファイルにあり、これはgitリポジトリにチェックインされています。このファイルに対する変更は、他のリポジトリに伝播される内容です。

他の場所は.git/configで、ほとんどのコマンドを実行するときに実際にgitが表示されます。

あなたはしばらくの間プロジェクトに取り掛かったと想像してください。fooというサブモジュールがあります。このサブモジュールのファイルは、いくつかのURLからチェックアウトされています。しかし、ある時点で、このURLが変更されます。サブモジュールが別のサーバーや別のパスなどからチェックアウトされるように変更されている可能性があります。リポジトリを更新すると、.gitmodulesファイルのコピーが更新されますが、.git/configファイルは更新されません。あなたはまだ古いURLからチェックアウトしています。新しいURLからのチェックアウトを開始する場合は、を実行して、新しい設定を.gitmodulesから.git/configにコピーします。 Gitはあなたの設定を自分で変更したかもしれないので、自動的にこれをやっていませんし、上書きしたくないからです。

+0

私は手動で '.gitmodules'のリンクを変更する必要があるのでしょうか?同じことを' .git/config'で手動で変更しない理由は何ですか?あるいは、2つの場所で変化するコマンドがありますか? – Narek

+0

新しいサブモジュールを追加するのに使うことができるが、既存のサブモジュールを変更することはできない 'git submodule add'以外の変更を一度にどのコマンドでも知ることはできません。 – db48x

+0

私は、1つの場所で手動で変更する必要があり、コマンドによって変更されている場所では、あなたの考えは変わっているということは私には奇妙なことですか? – Narek

関連する問題