2017-08-24 15 views
0

私は複数のサブモジュールを含むローカルリポジトリを持っています。 ローカルリポジトリのマスターブランチをアップストリームリポジトリに常に最新の状態に保ちたい(アップストリームリポジトリにも同じサブモジュールが含まれていますが、ここでは "最新"とはローカルリポジトリが親レポとサブモジュールの両方で上流)。私はgit pull--recurse-submodulesオプションで混乱します。サブモジュールを含むローカルリポジトリを最新の状態に保つ方法

a): git pull origin master --recurse-submodules

b): git pull origin master

私は正確に何--recurse-submodules手段を不思議でしたか? このオプションを追加しないと、ローカルレポのサブモジュールが更新されますか?

サブモジュールのみを更新するコマンドも見つかりました:git submodule update (--remote)a)またはb)に加えて、このコマンドを実行する必要がありますか。 ところで、サブモジュールを使ってローカルリポジトリを最新の状態に保つための一般的なワークフローを誰にでも教えてもらえますか?

PS:サブモジュールはすべて初期化されています。私はgithubと一緒に働いています。 Gitバージョン2.11.0

ありがとう!

+1

[すべてのgitのサブモジュールの最新を引くための簡単な方法]の可能な重複(https://stackoverflow.com/questions/1030169/easy-way-to-pull-latest-of-all-git-submodules ) –

+0

ありがとう@TimBiegeleisen。私が 'git pull origin master'を' --recurse-submodules'オプションなしで使うと、私には分かりません。ローカルレポのサブモジュールは更新されますか? – kz28

+0

'--recurse-submodules'オプションを追加しない限り、サブモジュールは更新されません。これを追加すると、各サブモジュールがそれぞれの元のリポジトリから最新のサブモジュールに更新されます。フラグを追加しないと、サブモジュールを更新せずにメインリポジトリを更新するだけです。 –

答えて

0

あなたの質問にある3つのコマンドは、それぞれわずかに異なるものです。各1ダウン行こう:

  • git pull origin master自分の原点リポジトリからあなたの親レポの最新バージョンを引っ張ります。サブモジュールのリビジョンハッシュは更新されません。

  • git pull origin master --recurse-submodulesは、各サブモジュールを起点リポジトリから最新のものに更新します。これにより、サブモジュールの更新されたリビジョンハッシュが原因で、親リポジトリに保留中の変更が表示されます。

    しかし、待って:あなたはあなたのサブモジュールのための「デフォルト以外の」枝を指定した場合、それは彼らの「起源」のリポジトリではなく、指定されたブランチから自分のサブモジュールを更新するようが、これは、予期しない結果をもたらす可能性があります。詳細については、このリストの最後のコマンドを参照してください。

  • あなたはあなたの質問の投稿でgit submodule update --remoteを言ったが、私はあなたが実際には、あなたがしている現在のフォルダを見てみましょうどの元とは対照的に、(後者は再帰的に、作業ツリーを検索しますgit submodule update --recursive --remoteを探しているのだと思いますに)。それは言った...

    git submodule update --recursive --remotegit pull --recurse-submodulesに似ていますが、.gitmodulesまたは.git/configファイルで指定された「非デフォルトの」枝を尊重する利点を持ちます。

関連する問題