リモートリポジトリをプルするリポジトリを作成したいと思います。
たとえば、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
コマンドを再度発行してください。注:通常、プロジェクトには多数の外部リポジトリがあります。そのため、リポジトリは常に「externals」ディレクトリの下にグループ化します。
オンラインの Pro Git Book には、サブモジュール(および一般的なgit)に関する良い情報が読みやすい形式で表示されています。または、git help submodule
も適切な情報を提供します。または、git wikiの Git Submodule Tutorial をご覧ください。
サブモジュールについて説明し、それらをSubversionのsvn:externalsメカニズムと比較するこのブログエントリに気付きました: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html
*ベストプラクティスとして、Externalsなどのサブモジュールを常に独自のディレクトリに配置する必要があります。そうしないと、ルートプロジェクトディレクトリが非常に高速に乱雑になる可能性があります。
あなたが知る必要があるもののほとんどはすでに答えられているので、私はそれに対処するつもりはありませんが、通常は欠けている小さな情報を見つけました。
ご存知のように、「git pull」はサブモジュールを更新せず、「git submodules update」もそれらのサブモジュールの最新のHEADをダウンロードしません。
すべてのサブモジュールを最新のアップストリームリビジョンに更新するには、次を使用できます。
git submodule foreach git pull
サブモジュールを頻繁に変更し、たくさん持っている場合、「git foreach」は非常に貴重なものになります。
結局、私は http://github.com/evilchelu/braid を見つけた
@Hugoの答えはあなたが必要とするものであり、うまくいくと思います。だから私はもっと簡単な方法を見つけました。
git submodule update --remote
それで全部です。
したがって、完全なワークフローは次のようになります。
git clone project-with-submodules
git submodule init
git config -l
git submodule update --remote