大きな git リポジトリ (LargeRepo) を小さなリポジトリ (SmallRepoA、SmallRepoB) に分割し、コミットを保持する方法については、多数のチュートリアルがあります。私は、各 SmallRepo が SmallRepo 内のファイルに関連するブランチとブランチ コミットのみを継承するという追加の要件でそれを行いたいと考えています。
各 SmallRepo について:
- ブランチが SmallRepo のファイルに影響を与えない場合は、ブランチを維持しないでください
- 残りのブランチについては、SmallRepo 内のファイルに影響を与えないコミットを削除します。
事実上、最初に個々の SmallRepos があった場合に世界がどのように見えるかを模倣する最終結果を得ようとしています。
次に例を示します。
LargeRepo が次のようになっているとしましょう。
LargeRepo
|---- Folder1
|---- Folder2
|---- Folder3
そして、高レベルのフォルダーごとに 1 つずつ、3 つの SmallRepos に分割したいと考えています。
Folder1
Folder2
Folder3
LargeRepo に Branch1 と Branch23 があるとします。Branch1 は Folder1 のファイルを変更し、Branch23 は Folder2 と Folder3 のファイルを変更しました。
ブランチ ビューは次のようになります。
Folder1
|----> Branch1 (all commits)
Folder2
|-----> Branch23 (only commits affecting files in Folder2)
Folder3
|------> Branch23 (only commits affecting files in Folder3)
理想的には、このソリューションは Windows の git コマンドラインで実装でき、BASH は必要ありません。