2010-11-23 15 views
50

git clone--recursiveとすると、すべてのgitサブモジュールも取得できます。gitリポジトリに--recursiveを追加する

クローン作成時にこの魔法の旗を追加することを忘れてしまった場合は、どうすれば今すぐサブモジュールを手に入れることができますか?

さらに、再帰フラグを将来のクローンのデフォルトとしてどのように設定することができますか?

答えて

59

あなたは、単純なトップレベルのクローン後にこのでそれを行うことができます。

git submodule update --init --recursive 

私はクローンはデフォルトでこれをやらせてお勧めしません。サブモジュールを積極的に開発用に使用していて、青い月に一度アップグレードできるgithub上のサードパーティのOSSライブラリにリンクするのではなく、git slaveまたはsubtreeを使用する場合は、これを行う適切な方法です。

これが役に立ちます。

1

IIRC、 git submodule initgit submodule update

残念ながら、私はしかし、デフォルトで再帰を有効にするオプションが表示されません。あなたのレポのルートから

+0

あなたはいつも再帰的なクローンを行い、シェルまたはgitのエイリアスを作成することができます。しかし、ここでは2つのステップで行うのが難しく思えるかもしれませんが、この方法では 'init'の後で' update'の前にconfigファイルのサブモジュールリポジトリのURLを変更できます。サブモジュールにプライベートレポジトリ用のURLが設定されているリポジトリで、これを公開URLに変更する必要があるリポジトリでは、これを行う必要があります。 – Abizern

7
  1. $ git submodule update --init --recursive 
    

    .gitmodulesファイルに見られるような値になる、ともに再帰的に必要がある場合は、それらを初期化し、任意およびすべての登録されたサブモジュールを更新します複雑なサブモジュール(それ自身のサブモジュールを持つサブモジュール)を作成し、それらも初期化して更新します。再帰的にデフォルトのクローニング作るために私の知っている

  2. 最も簡単な方法は、別名限り、常にオプションを追加するなど

    $ git config --global alias.clone = 'clone --recursive' 
    

    git cloneをシャドウするだろう、私はそれは慣用的な方法だと思います。

+1

'clone'コマンドをシャドウするのではなく、$ git config --global alias.cloner = 'クローン - 再帰的'コマンドを追加することをお勧めします。 – Abizern

+7

'='マークを削除する必要があります: 'git config- -global alias.clone 'clone - recursive'' – ELLIOTTCABLE

+2

注:この回答は***完全に間違っています***。 gitは既存のgitコマンドに "シャドウエイリアス"を許可しません。 'alias.clone'は完全に無視されます。 – Jez

関連する問題