リモートリポジトリを取り込むリポジトリを作成したいのですが。
たとえば、サブモジュールとしてjQueryがあるとします。
git://github.com/jquery/jquery.git
jQueryをサブモジュールとしてリポジトリを作成し、自分の外部をリモートリポジトリとして追加するプロセスはどうなるでしょうか。
また、これがセットアップされたら、自分のリモートにプッシュ/プルした場合、外部はそのまま残りますか?
リモートリポジトリを取り込むリポジトリを作成したいのですが。
たとえば、サブモジュールとしてjQueryがあるとします。
git://github.com/jquery/jquery.git
jQueryをサブモジュールとしてリポジトリを作成し、自分の外部をリモートリポジトリとして追加するプロセスはどうなるでしょうか。
また、これがセットアップされたら、自分のリモートにプッシュ/プルした場合、外部はそのまま残りますか?
回答:
サブモジュールは、参照、使用が非常に簡単です。MyWebAppがすでにリポジトリとして設定されていると仮定して、ターミナルから次のコマンドを発行します。
cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery
これにより、externals/jquery
* という名前のディレクトリが作成され、github jqueryリポジトリにリンクされます。次に、サブモジュールを初期化し、コードをそれに複製するだけです。
git submodule update --init --recursive
これで、すべての最新コードがサブモジュールに複製されました。jqueryリポジトリーが変更され、最新のコードを引き下げたい場合は、submodule update
コマンドを再発行してください。注:通常、プロジェクトには多数の外部リポジトリーがあるため、常に「外部」ディレクトリーの下にリポジトリーをグループ化します。
オンラインのPro Git Bookには、サブモジュール(および一般にgit)に関するいくつかの優れた情報が読みやすい方法で示されています。あるいは、git help submodule
良い情報も提供します。または、git wikiのGitサブモジュールチュートリアルをご覧ください。
サブモジュールについて話し、それらをSubversionのsvn:externalsメカニズムと比較するこのブログエントリに気づきました。http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
*ベストプラクティスとして、サブモジュールは常にExternalsなどの独自のディレクトリに配置する必要があります。そうしないと、ルートプロジェクトディレクトリが非常に速く混乱する可能性があります。
git submodule add
、git submodule update
...どれほど簡単にできるかわかりません。
知っておくべきことのほとんどはすでに回答されているので、その点については触れませんが、通常は不足している小さな情報を見つけました。
ご存知のように、「git pull」はサブモジュールを更新せず、「git submodules update」はそれらのサブモジュールの最新のHEADもダウンロードしません。
すべてのサブモジュールを最新のアップストリームリビジョンに更新するには、次を使用できます。
git submodule foreach git pull
サブモジュールを頻繁に変更し、その数が多い場合、「git foreach」は非常に貴重になります。