フォークしたい 3 つのプロジェクトがあります。それらはすべて互いに関連しています。1 つを変更すると、別の変更が必要になる可能性があります。それらはすべて関連しているため、フォーク用に 1 つのリポジトリを作成し、各オリジナルから更新を取得する機能を維持したいと考えています。
git リポジトリをセットアップするにはどうすればよいですか?
これらは予備的な考えであるため、これがクレイジー/愚かであっても驚かないでしょう. それは...ですか?
フォークしたい 3 つのプロジェクトがあります。それらはすべて互いに関連しています。1 つを変更すると、別の変更が必要になる可能性があります。それらはすべて関連しているため、フォーク用に 1 つのリポジトリを作成し、各オリジナルから更新を取得する機能を維持したいと考えています。
git リポジトリをセットアップするにはどうすればよいですか?
これらは予備的な考えであるため、これがクレイジー/愚かであっても驚かないでしょう. それは...ですか?
git-submodule の機能に興味があるかもしれません。ここから引用:
Git のサブモジュール サポートにより、外部プロジェクトのチェックアウトをサブディレクトリとしてリポジトリに含めることができます。サブモジュールは独自のアイデンティティを維持します。サブモジュール サポートは、サブモジュール リポジトリの場所とコミット ID を格納するだけなので、含まれているプロジェクト (「スーパープロジェクト」) を複製する他の開発者は、同じリビジョンのすべてのサブモジュールを簡単に複製できます。スーパープロジェクトの部分的なチェックアウトが可能です。Git に、サブモジュールを複製しない、一部、またはすべて複製するように指示できます。
" " を使用して、いつでもgit remote add <name> <url>
リポジトリをソースとして追加できます。
「実際に」試したことがない可能性が 1 つありますが、うまくいく可能性があります。
Proj1、Proj2、および (推測で) Proj3という名前の 3 つのプロジェクトがあるとします。また、それらのすべてまたは一部が外部ライブラリに依存しているとしましょう。たとえば、 Lib1.dll と呼ばれるものとSuperLib.dllと呼ばれるものがあります。
まず、フォルダー構造については、次のようにします。
MyCode\
build_all.bat
Docs\
[...]
Libs\
Lib1.dll
SuperLib.dll
Proj1\
[...]
Proj2\
[...]
Proj3\
[...]
次に、各 ProjX フォルダーに 1 つのリポジトリを作成します。
cd \MyCode\Proj1
git init
cd \MyCode\Proj2
git init
cd \MyCode\Proj3
git init
次に、全体のリポジトリを作成します。
cd \MyCode
git init
git の場合、このリポジトリの内容は、Libs
フォルダーとその内容、build_all.bat
ビルド スクリプト、および 3 つのサブプロジェクトになります。
したがって、ソース コードを変更すると、たとえばProj1\Main.cs
、全体に変更が反映されません。git commit
Proj1 で実行する必要があり、次に全体に移動し、次にそれを実行します(これで、git commit
git は Proj1 が変更されたことを確認できるようになります)。
この方法を使用すると、全体の履歴は ProjX がいつ変更されたかを示すだけで、個々のファイルを直接追跡することはありません。ただし、予想どおり、ProjX のリポジトリは通常どおりすべてのファイルを追跡します。
「実際のプロジェクト」で試してみたら、結果を教えてください!
幸運を!
サブツリーマージ戦略を使用する必要があると思います。実際に試してみて、うまくいくかどうかを確認する必要があります。これが良いアプローチであることが判明した場合は、この回答を承認済みとしてマークします。
それまでの間、私はまだ提案を受け付けています。