:gitリポジトリをサブモジュールのチェックアウトでデフォルトのブランチでクローンするには?質問に
はgit clone --recursive
が行われ、デフォルトのブランチにgitのサブモジュールをチェックアウトする必要があり、それを考え出しましたが、どのようにそれを行うには?
コマンドgit clone --recurse-submodules
を使用することを勧めるが、そのサブモジュールは、まだそれらのデフォルト枝にチェックアウトではないのリポジトリをクローンした後。
:gitリポジトリをサブモジュールのチェックアウトでデフォルトのブランチでクローンするには?質問に
はgit clone --recursive
が行われ、デフォルトのブランチにgitのサブモジュールをチェックアウトする必要があり、それを考え出しましたが、どのようにそれを行うには?
コマンドgit clone --recurse-submodules
を使用することを勧めるが、そのサブモジュールは、まだそれらのデフォルト枝にチェックアウトではないのリポジトリをクローンした後。
あなたは、各サブモジュールで任意のコマンドを実行するためにgit submodule foreach
を使用することができます。 --recursive
フラグは、サブモジュールのサブモジュールを介して再帰します。 git remote show [name-of-remote]
は現在どのブランチ[name-of-remote]
がアクティブであるかを示します。出力はのgit remote show
クリーンアップするために、いくつかの他のツールとそれらを組み合わせることで得られます。
git submodule foreach --recursive "git checkout $(git remote show origin | grep 'HEAD branch' | sed 's/.*: //')"
これは、もちろん、すでにサブモジュールをクローン化したに依存しています。
git submodule foreach git checkout master
ありがとう、確かに役立ちますが、デフォルトブランチがマスターではないサブモジュールではどうなりますか? – user
ありがとう!私は 'git clone --recursive https ... 'コマンドを実行できると思います。 git submodule foreach ... 'を実行すると、すべてがクローンされ、マスターがチェックアウトされます。 – user
ソリューションプラットフォームに依存しないのですか、それともWindows版ですか? Windowsでこのコマンドを実行すると、 'grep 'HEADブランチ'が使用できなくなります。 sedの/.*:// '部分。 – user
@user 'grep'と' sed'は標準のGit for Windowsインストールに含まれていると思いますが、インストール時にどのオプションを選択したかによって、cmdではなくgit bashを使う必要があります。 – 8bittree