web-dev-qa-db-ja.com

すべてのサブモジュールでgitリポジトリのクローンを作成する

いくつかのサブモジュールを含む作業中のgitリポジトリがあります(異なるリポジトリのクローンを作成することで取得できます)。

ここで、プッシュまたはクローン作成を使用して、リポジトリ全体(すべてのサブモジュールを含む)を別のマシンの裸のgitリポジトリにコピーします。サブモジュールの履歴を失っても大丈夫です(サブモジュールのコンテンツを保持することに興味があります)。

これは可能ですか?私の試みでは、複製されたリポジトリでは、サブモジュールディレクトリは空です。

P.S.これが正しいワークフローではないことはわかっていますが( サブモジュールを使用したパブリックリポジトリの作成 を参照)、元のサブモジュールを更新する可能性はありません。

17
Claudio

次のように、recursiveを使用して、すべてのサブモジュールでgitリポジトリのクローンを作成できます。

git clone --recursive your-repo-url

一方、すでにクローンを作成している場合は、次を使用できます。

git submodule init
git submodule update

サブモジュールの履歴が失われることはありません

23
user3524542

複製されたリポジトリでは、サブモジュールディレクトリは空です。

「クローンリポジトリ」によってベアリポジトリを参照している場合、それは正常です。ベアリポジトリは常に空です。

ベアリポジトリのクローンをほのめかしている場合は、以下を追加する必要があります。

git submodule update --init --recursive

そうすれば、それらのサブモジュールの内容が表示されます。


サブモジュールは次のとおりです。

したがって、(--recursiveオプションを使用しても)そのリポジトリのクローンを作成するだけで、サブモジュールが続きます。

3
VonC