メインのgitリポジトリAがあり、メインプロジェクトのサブディレクトリにある別のgitリポジトリBのソースを使用しています。ここで、この使用済みサブディレクトリのAリポジトリ内でBリポジトリをチェックアウトするとよいでしょう。他の誰かがリポジトリを複製する場合はもちろん、メインリポジトリAを取得し、その中に自動的にBリポジトリを取得する必要があります。
ディレクトリ構造を視覚化してみましょう:
+ main_repository-メインリポジトリのルートディレクトリ + src-ソースを含むディレクトリ + foreignRepo-これは別のgitリポジトリのルートディレクトリである必要があります +バイナリ +その他
これはリモートリポジトリでも認識されている必要があります。他の人がこれをチェックしてすべてのものをコンパイルできる必要があるため、ローカルコピーだけでは役に立ちません。
Gitサブモジュール についてお読みください。
Gitバージョン1.7.11以降ではgit subtree
を使用してください。 git subtree
はgitサブモジュールより優れています :
git subtree
では、リポジトリのユーザーが新しいことを学ぶ必要はありません。サブツリーを使用して依存関係を管理しているという事実を無視できます。git subtree
は、git submodule
が行うような新しいメタデータファイルを追加しません(.gitmodule
など)。さらに、 既存のリポジトリのサブツリーを新しいリポジトリに切り離す が必要な場合は、git subtree split
が役立ちます。
UPDATE 2020年2月:最近は subrepo がさらに好きです。
サブモジュールを使用せずに2つのgitリポジトリをネストできます。 ChildRepoがParentRepoのサブディレクトリであり、両方がgitリポジトリであるとします。
+ ParentRepo
- ChildRepo
ChildRepoにファイルを追加すると、ParentRepoはそれを無視します。コミットすると、ChildRepoに追加されます。 ChildRepo内のファイルをParentRepoに追加することはできません。