サブツリー マージまたはサブモジュールは、コンポーネント ベースの開発用です。2 つの異なるが一貫したファイル セットを組み合わせたものです。
ファイルの各セットは、個別に分岐またはラベル付け (サブモジュール) することも、一緒に (サブツリー マージ、独自の履歴を取得する機能を維持しながら) することもできるため、独自のディレクトリにあります。
ただし、どちらも別のディレクトリが必要です。
しかし、あなたが説明しているのは (" " はルート ディレクトリにあり、" " または " "Base Project
で成長しています)、システム ベースのアプローチに関するものです。すべてのコンポーネントが 1 つの大きなコンポーネントにマージされます。単位。
したがって、プロジェクトごとに 1 つのブランチ ( for 、forなど) を持つことができます。project 1
project 2
branch1
CMS-projet1
branch2
CMS-project2
projectx
ただし、固有の変更または CMS 固有の変更を元の (および別の) リポジトリに報告する必要がある場合は、専用のブランチで特定の変更を行い、それらの変更を結合します。
branchp1
影響を与える変更のためのものですproject1
branchc1
影響を与える変更のためのものですCMS
branch1
branchp1
fromとのマージの結果になります。branchc1
( も同様branch2
)
その後、これらの変更をパッチとしてエクスポートできます。
- からレポ
branchp1
へproject1
- からレポ
branchc1
へCMS
不便なのは、元のリポジトリに既にマージされたものを Git が記憶しないことですが、これにより、CMS-projectx
一連のファイルで作成された共通の履歴を元CMS
のリポジトリに戻してレポートすることができますprojectx
。
注: 2 つの余分なブランチを管理したくない場合、別の解決策は次のとおりです。
- 各コミットには、CMS の変更またはプロジェクトの変更のみが含まれていることを確認してください
- それらを区別するのに役立つコミット メッセージを残します ("
[CMS] my CMS modification comment...
"、または " [Project1] my project1 modification comment...
"
- スクリプト
git-extract-patches
を使用して、適切なコミットのみをパッチとしてエクスポートします。