12

私は git サブモジュールのコツをつかんでおり (希望的観測?)、より具体的な質問を思いついています。これは良い兆候です...

スーパープロジェクトが参照するサブモジュールのリビジョンを と で見つけようとしましたが、そこには何も言及されていません....gitmodulesシナリオ は、サブモジュールをルートの場所(インポート元)で変更していることです。そして、それらが「サブモジュール化」されている場所にそれらをプルします... それらの変更をスーパープロジェクトリポジトリに組み込むためにスーパープロジェクトからコミットする以外に、サブモジュールコミットでプルされた新しいものを登録するために「」も行う必要がありますか? .git/config

git update

基本的に質問は次のとおりです。

git submodule updateスーパープロジェクトを最初に複製するとき、またはサブモジュールを (独自のリポジトリから) プルするたびに " " する必要がありますか?

ありがとうございました

4

1 に答える 1

24

以前の回答で述べたようにgit submodule update、そのコマンドは、ファイルに基づいてプロジェクトの特定のバージョンをチェックアウトし.gitmodulesます。

GitProページは次のように主張しています:

これはサブモジュールの重要なポイントです。サブモジュールを正確なコミットとして記録します。

「スーパープロジェクト」(1つまたは複数のサブモジュールを参照するプロジェクト)内で実行することにより、どのコミットが参照されているかを確認できます。

  • git submodule status(そのサブモジュール内で直接コミットを行った場合を除き、thinatの場合は、スーパープロジェクトに格納されているサブモジュールの+前に「」が表示されます)またはSHA-1HEADSHA-1
  • git ls-files --stageGitインデックスの特別なエントリであるモード「160000」のエントリを探しています。

つまり、サブモジュールのコミットSHA1を変更する可能性のある「スーパープロジェクト」でgitコマンドを実行するたびに、「」が必要になりますgit submodule update

スーパープロジェクトを最初に複製するとき、またはサブモジュールを(独自のリポジトリから)プルするたびに、「git submoduleupdate」を実行する必要がありますか?

はい、メインプロジェクトでサブモジュールの変更をプルダウンするたびにこれを行う必要があります。
これは、サブモジュールの元のリポジトリが存在する正確なコミットを参照しており(上記のとおり)、そのリポジトリをプルすると、そのコミットを効果的に変更しているためです。

于 2010-02-09T08:05:52.060 に答える