2017-07-28 16 views
0

リポジトリのサブモジュールをかなり頻繁にバンプする必要があります。私のサブモジュールの中には、ブランチmasterを使用しているものと、developmentを使用しているものがあります。今は、git submodule foreach git pull origin BRANCHNAMEでバージョンを正しくバンプする方法しか知りません。これは失敗し、反対側のブランチを使用するブランチに到達すると終了します。たとえば、これをmasterで実行した場合、次のエラーが表示され、コマンドが終了します。特定のgitサブモジュールをバンプする方法は?

fatal: Couldn't find remote ref master 
Stopping at 'submodules-dir/repo-that-uses-development-branch'; script 
returned non-zero status. 

git submoduleと唯一のいずれかへの道は、一度に1つを変更し、私は枝をプルダウンすることができるように、単一の分岐を入力してありますか?または、ブランチ名をフィルタリングして、git submodule foreach git pull originが各サブモジュールで現在使用されているブランチだけをプルする方法があります。

答えて

0

各サブモジュールは通常のリポジトリです。特別なのは、それが通常のHEADモードになっていることです。すなわち、どのブランチにもありません。しかし

することができます、record a branch name for each submodule in that submodule's superproject

-b、リポジトリの--branch

支店は、サブモジュールとして追加します。ブランチの名前は、update --remoteの場合、.gitmodulessubmodule.<name>.branchと記録された です。特別な値。サブモジュール内のブランチの名前 が、現在のリポジトリの現在のブランチ と同じ名前であることを示すために使用されます。

その後、git submodule update --remoteを実行することができます。

このオプションは、更新コマンドに対してのみ有効です。スーパープロジェクトの記録したSHA-1を使用してサブモジュールを更新する代わりに、サブモジュールのリモート追跡ブランチのステータスを使用します。使用されるリモートはブランチのリモート(branch.<name>.remote)で、デフォルトはoriginです。使用するリモートブランチのデフォルトはmasterですが、submodule.<name>.branchオプションを.gitmodulesまたは.git/config.git/configが優先されます)のいずれかに設定すると、ブランチ名が上書きされる可能性があります。

(脇:これは.gitmodulesファイルに保存されたデフォルトの設定を上書きします親プロジェクトで、もしあなたgit config特定のブランチを、意味.gitmodulesファイル、それは通常のバージョン管理ファイルであるため、持ち運びます。 .git/config設定が現在の親プロジェクトのクローンに固有のものながら、親プロジェクトにして、任意の新鮮なクローン上に存在する。)

これはサポートされているアップデート手順(--checkout--rebase、など)のいずれかで動作します。唯一の変更は、ターゲットSHA-1のソースです。例えば、... [snip]

(詳細については、the linked documentationを参照してください)。

関連する問題