5

私の個人用リポジトリには、サブモジュールとしていくつかのリポジトリがあります。そして、次のコマンド

$ git submodule foreach git pull origin master

ruby レポジトリに入った直後に以下のような結果に直面したのは、ruby レポジトリに master ブランチがないようで、"git pull" が停止したためです。

Entering 'rails'
From git://github.com/rails/rails
 * branch            master     -> FETCH_HEAD
Already up-to-date.
Entering 'roo'
From git://github.com/hmcgowan/roo
 * branch            master     -> FETCH_HEAD
Already up-to-date.
Entering 'ruby'
fatal: Couldn't find remote ref master
Stopping at 'ruby'; script returned non-zero status.

だから私の質問はwhat should I do to git pull for all of submodules only by git command?、これにスクリプトを作成する必要がありますか? git から提供される 1 つのコマンド ラインだけでこれが実現することを願っています。

4

3 に答える 3

5

|| trueサブモジュールコマンドに追加するだけです:

git submodule foreach 'git commit -m "my commit message" || true'
于 2014-07-19T16:32:51.243 に答える
4

gitサブモジュールは通常、切り離された HEAD 状態にgit pullあるため、マージ段階になると、サブモジュールは何を意味するのか理解できません。git submodule foreach git fetch最新の変更をリポジトリに取り込むことだけが目的の場合は、代わりに試してください。master各サブモジュールをそれぞれの に更新したい場合origin/masterは、フォローアップできますgit submodule foreach git checkout master; git submodule foreach git merge origin/master

次に、もちろん、メイン リポジトリで使用する各サブモジュールのバージョンを決定する必要があります (origin/master常にやみくもに使用することはお勧めしません。不安定な場合があります。既知の適切なタグなどを選択することをお勧めします)。サブモジュールでこれらのバージョンをチェックアウトし、メイン リポジトリで適切なgit adds をフォローアップしてください。git commit

于 2013-02-19T16:40:26.843 に答える