Git リポジトリ内にサブプロジェクトを配置することを検討しています。リポジトリ、つまり ParentRepo は、プライベート サーバーと同期する必要があります。次に、いくつかのサブディレクトリも会社の github リポジトリにプッシュし、上流の github リポジトリからプルする必要があります。また、github にプッシュされるサブディレクトリ (親リポジトリ全体ではなく) からブランチを作成する機能も必要です。
したがって、階層は次のようになります。
- ParentRepo/Dir1/GitHubProj1
- ParentRepo/Dir1/GitHubProj2
- ParentRepo/Dir1/PrivateProj
GitHubProj1 と GitHubProj2 は、コミュニティ github リポジトリからのフォークです。コミュニティの github リポジトリからアップストリームの変更を取得し、github リポジトリから分岐できるようにする必要があります。PrivateProj は、どの github リポジトリからもプッシュまたはプルしません。すべてがプライベート サーバーの ParentRepo にプッシュされます。
サブモジュールの使用も検討しましたが、苦情が多いようで、代わりにサブツリーを使用することにしました。会社の github アカウントの URL を使用してサブツリーを作成し、外部の github アカウント用のリモート追跡ブランチを追加しました。
ただし、 --branch オプションを指定して git subtree split コマンドを使用してサブツリーのブランチを作成しようとすると、サブツリーのコンテンツが親リポジトリのルートに配置されました。
各サブツリーのブランチを作成するとき、親リポジトリ内の元のディレクトリ構造を維持したいと考えています。特別な命名法を使用する以外に、この方法でブランチを作成する方法や、レポを別の方法で設定してこれを可能にする方法はありますか?