同様の構成を持つ 3 つの git リポジトリと、それらの間にいくつかの重複したディレクトリがあります。それらは 1 つの大きなプロジェクトのサブプロジェクトです。
Proj1/
.git/
feature1_lib/
feature1_app/
feature1/ <- specific to Proj1
feature2_lib/
...
Proj2/
.git/
feature1_lib/
feature1_app/
feature1/ <- specific to Proj2
feature2_lib/
...
Proj3/
.git/
feature1_lib/
feature1_app/
feature1/ <- specific to Proj3
feature3_lib/ <- specific to Proj3
feature3_app/ <- specific to Proj3
feature3/ <- specific to Proj3
...
それらは同時に開発されましたが、歴史はわずかに異なります。
Proj1/
...
commit4 "Commit specific to Proj1."
commit5 "Add code to feature1_lib."
commit6 "Fix bugs in feature1_lib."
commit7 "Refactoring in feature1_lib."
...
Proj2/
...
commit6 "Import changes from Proj1." <- after commit7 in Proj1
commit7 "Commit specific to Proj2."
commit8 "Fix bugs in feature2_lib."
commit9 "Add code to feature2_lib."
...
等々。
現在、複製されたパーツをカットして接着するオプションを探しています。私はそれがこのように見えるべきだと思います
Proj1_2_common/
.git/
...
Proj1_2_3_common/
.git/
...
Proj1/
.git/
...
Proj2/
.git/
...
Proj3/
.git/
...
サブツリーとサブモジュールについて読みましたが、完全には理解していません。プロジェクトで特定のディレクトリを指すことができるのに、なぜサブツリーを作成する必要があるのですか? つまり、 からサブツリーを作成する代わりに"feature1_lib/"
、プロジェクトを再構成して を調べることができます"Proj1_2_3_common/feature1_lib/"
。
では、あなたの観点から、ここでより良いオプションは何ですか? 最も簡単なものは何ですか?このような厄介な歴史をどのように処理して、移動後にいくつかの参照を作成するのですか?