サブモジュールは、これを実現する最も簡単な方法です。
サブモジュールを操作するには、新しいサブモジュールを追加する方法と既存のものを初期化する方法の 2 つの一般的な方法があります。
新しいサブモジュールの追加
ローカル リポジトリのルートから次を実行します。
git submodule add <repository> external/engage.iphone
.
このadd
コマンドは、既存のサブモジュールを使用してリポジトリを複製した場合とは対照的に、最初にサブモジュールをリポジトリに追加する場合に使用します)。ローカルまたはリモート パス上にある別のリポジトリをリポジトリ ルートの .gitmodules ファイルに追加し (リポジトリを公開する場合、他の開発者がこれにアクセスする必要があることに注意してください!)、指定した場所にリポジトリをクローンします。external/engage.iphone
上記の例では。この段階で、システムにサブリポジトリ ファイルがあり、.gitmodules ファイルとローカル リポジトリの構成の両方にサブモジュールとしてリストされています。
ただし、サブモジュールを自分で追加していない可能性があります...
既存のサブモジュールの初期化
すでにサブモジュールが追加されているリポジトリを複製する場合、状況は少し変わります。この状況では、.gitmodules ファイルにはサブモジュールが一覧表示され、それらを取得する場所が示されますが、ローカル リポジトリ構成はそれらについて何も認識せず、実際のファイルはシステム上にまだ存在しません。まず、サブモジュールを初期化する必要があります。
git submodule init
これは、.gitmodules にリストされているすべてのリポジトリで実行され、.git/config に追加されます。Git はリポジトリを認識していますが、実際にはまだクローンを作成していないため、次のコマンドを実行します。
git submodule update
このコマンドをいつでも実行して、登録済みのサブモジュールを更新できます。つまり、欠落しているサブモジュールを複製できます。
git submodule sync <submodule>
サブモジュールの追加時に特定のコミットを指定しない限り、これを実行してすべてのサブモジュールをリモート HEAD に更新します。特定のサブモジュールを指定すると、そのサブモジュールのみが同期されます。
真の git 流に、init
コマンドを と組み合わせてupdate
時間を節約できます。
git submodule update --init
.
もちろん、.gitmodules と .git/config が使用するレイアウトを理解したら、いつでも手動で更新できます (config のブランチとリモート セクションに似ています)。
すべての詳細は man ページ ( kernel.org version ) にあります。