サブモジュールをリポジトリに入れようとしています。問題は、親リポジトリを複製したときに、サブモジュールフォルダが完全に空になっていることです。
git clone parent_repo
が実際にサブモジュールフォルダーにデータを入れるようにする方法はありますか?
例えば、 http://github.com/cwolves/sequelize/tree/master/lib/ のように、nodejs-mysql-native
は外部のgitサブモジュールを指していますが、sequelize
プロジェクトをチェックアウトすると、そのフォルダーは空です。
Gitのバージョン2.13以降では、--recurse-submodules
の代わりに--recursive
を使用できます。
git clone --recurse-submodules -j8 git://github.com/foo/bar.git
cd bar
編集者注:-j8
は、バージョン2.8で利用可能になったオプションのパフォーマンス最適化であり、一度に最大8つのサブモジュールを並列にフェッチします - man git-clone
を参照してください。
Gitのバージョン1.9からバージョン2.12まで(-j
フラグはバージョン2.8+でのみ利用可能):
git clone --recursive -j8 git://github.com/foo/bar.git
cd bar
Gitのバージョン1.6.5以降では、次のものを使用できます。
git clone --recursive git://github.com/foo/bar.git
cd bar
すでにクローンされているリポジトリ、または古いGitバージョンの場合は、次のようにします。
git clone git://github.com/foo/bar.git
cd bar
git submodule update --init --recursive
サブモジュールがいっぱいになる前に、2つのことをしなければなりません:
git submodule init
git submodule update
オリジナルの答え2010
joschi がコメントで述べているように、git submodule
は--recursive
オプションをサポートするようになりました(Git1.6.5以降)。
--recursive
が指定されている場合、このコマンドは登録されているサブモジュールに再帰し、その中のネストされているサブモジュールをすべて更新します。
gitサブモジュールを再帰的に扱う initの部分を参照してください。git submodule
の説明を参照してください。
Git以降のバージョン1.6.5では、
–-recursive
オプションを付けてスーパープロジェクトを複製することでこれを自動的に行うことができます。
git clone --recursive git://github.com/mysociety/whatdotheyknow.git
Git 2.8で2016を更新しました:「 git clone --recursive
を使ってgitサブモジュールのダウンロードを高速化/並列化するにはどうすればいいですか? 」を参照してください。
複数のスレッドを使用して、並行してサブモジュールの取得を開始できます。
インスタンスについて:
git fetch --recurse-submodules -j2
このコマンドを使用して、すべてのサブモジュールでリポジトリを複製できます。
git clone --recursive YOUR-GIT-REPO-URL
プロジェクトを既にクローンしている場合は、次のものを使用できます。
git submodule init
git submodule update
サブモジュールがブランチに追加された場合は、必ずそれをクローンコマンドに含めてください。
git clone -b <branch_name> --recursive <remote> <directory>
これを試して:
git clone --recurse-submodules
サブプロジェクトがすでに親プロジェクトに追加されていると仮定して、サブモジュールのデータを自動的に取り込みます。
遅い答え
// git CLONE INCLUDE-SUBMODULES ADDRESS DESTINATION-DIRECTORY
git clone --recursive https://[email protected]/USERNAME/REPO.git DESTINATION_DIR
あなたがBitBucketの管理者権限を持っていても、私はちょうど1時間を友人といじって過ごしたとしても、常にORIGINALリポジトリをクローンしてリポジトリを所有する人のパスワードを使用してください。あなたがこのミニトラップに出くわしたことを知りたくてたまらない:P
Gitリポジトリにサブモジュールを含めるためにこれを試してください。
git clone -b <branch_name> --recursive <remote> <directory>
または
git clone --recurse-submodules
私はあなたが3つのステップで進むことができると思います、
git clone
git submodule init
git submodule update
リポジトリのクローンを作成するときに--recursive
フラグを使用できます。このパラメータはリポジトリに定義されているすべてのサブモジュールのクローンを作成するように強制します。
git clone --recursive [email protected]:your_repo.git
クローン作成後、サブモジュールのブランチが変更されることがあるので、その後にこのコマンドを実行します。
git submodule foreach "git checkout master"
サブモジュール並列フェッチは、一度に複数のリポジトリーをフェッチできるようにすることで、リポジトリーとそのすべての関連サブモジュールをフェッチするのに必要な時間を短縮することを目的としています。これは新しい--jobsオプションを使うことで達成できます。
git fetch --recurse-submodules --jobs=4
Gitチームによると、これは多くのサブモジュールを含むリポジトリの更新をかなりスピードアップすることができます。新しい--jobsオプションを指定せずに--recurse-submodulesを使用すると、Gitはサブモジュールを1つずつ取得します。
親リポジトリ(一部のサブモジュールリポジトリを含む)を複製した後、次のようにします。
git submodule update --init --recursive
これを試して。
git clone -b <branch_name> --recursive <remote> <directory>
サブモジュールをブランチに追加した場合は、必ずそれをcloneコマンドに追加してください。
GitHubリポジトリでも同じ問題が発生しました。アカウントにSSHキーがありませんでした。プロセスは
次に、サブモジュール(git clone --recursive YOUR-GIT-REPO-URL
)でリポジトリを複製できます
または
git submodule init
およびgit submodule update
を実行して、すでに複製されたリポジトリのサブモジュールを取得します。
新しいプロジェクトの場合は、次のようにできます。
$ git clone --recurse-submodules https://github.com/chaconinc/YourProjectName
既にインストールされている場合:
$ cd YourProjectName (for the cases you are not at right directory)
$ git submodule init
$ git submodule update