Gitの2.23(Q3 2019):クローンを作成する場合や、最新のリビジョンにサブモジュールを更新します。
git clone --recurse-submodules --remote-submodules
それらを記録されたSHA1でクローンしたい場合:
git clone --recurse-submodules
下記参照。
元の回答2010
以下のようjoschiはコメントで言及し、git submodule
サポートするようになりまし--recursive
オプション(Git1.6.5およびそれ以上)。
--recursive
が指定されている場合、このコマンドは登録されたサブモジュールに再帰し、ネストされたサブモジュールを更新します。
initパートについては、再帰的にgitサブモジュールを操作するをご覧ください。
詳細git submodule
については、説明を参照してください。
git以降のバージョン1.6.5では、次の–-recursive
オプションを使用してスーパープロジェクトを複製することで、これを自動的に行うことができます。
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
2016年の更新、Git 2.8を使用:「Gitサブモジュールのダウンロードを高速化/並列化する方法を教えてgit clone --recursive
ください」
複数のスレッドを並行して使用して、サブモジュールのフェッチを開始できます。
インスタンスについて:
git fetch --recurse-submodules -j2
さらに良いことに、Git 2.23(2019年第3四半期)では、1つのコマンドでサブモジュールを複製し、トラッキングブランチにチェックアウトできます!
Ben Avison()によるコミット4c69101(2019年5月19日)を参照してください。(合併によりJunio C浜野- -で9476094コミット、2019年6月17日)をbavison
gitster
clone
:--remote-submodules
フラグを追加
使用している場合git clone --recurse-submodules
があることは以前に合格する方法ではなかった--remote
暗黙的にスイッチをgit submodule update
使用すると、サブモジュールが自分のリモート追跡ブランチ上ではなく、SHA-1親プロジェクトに記録してチェックアウトしたい任意のユースケースのためのコマンド。
このパッチはこの状況を修正します。
これは、実際に合格--no-fetch
するgit submodule update
だけでなく、彼らはサブモジュールがばかりクローニングされている理由のよう、リモートもう一度だけからフェッチするようダウン遅いものになります。
つまり:
--[no-]remote-submodules:
複製されるすべてのサブモジュールは、スーパープロジェクトの記録されたSHA-1ではなく、サブモジュールのリモート追跡ブランチのステータスを使用してサブモジュールを更新します。に渡すの--remote
と同じgit submodule update
です。
git clone --recurse-submodules --remote-submodules
(Q3 2019 Git 2.23)になります。1つのコマンドでサブモジュールを複製して更新します。以下の私の編集した回答を参照してください。