Сплит git-репозиторий с сохранением и ограничением веток
Существуют многочисленные учебные пособия о том, как разбить большой репозиторий git (LargeRepo) на более мелкие репозитории (SmallRepoA, SmallRepoB) и сохранить коммиты. Я хотел бы сделать это с дополнительным требованием, чтобы каждое SmallRepo наследовало только те ветви и фиксации ветвей, которые имеют отношение к файлам в SmallRepo.
Для каждого SmallRepo:
- Не поддерживать ветку, если ветка не влияет на файлы в SmallRepo
- Для остальных веток удалите коммиты, которые не влияют на файлы в SmallRepo.
По сути, я пытаюсь получить конечный результат в микмике, как бы выглядел мир, если бы у меня был отдельный SmallRepos для начала.
Вот пример:
Допустим, LargeRepo выглядит так:
LargeRepo
|---- Folder1
|---- Folder2
|---- Folder3
И я хочу разделить на три 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)
В идеале решение может быть реализовано с помощью командной строки git в Windows и не должно включать BASH.
1 ответ
Это общее решение для разделения репо также работает для разграничения ветвей: /questions/20663896/otsoedinit-peremestit-podkatalog-v-otdelnyij-git-repozitorij/20663912#20663912
По какой-то причине он не работал с репо, который я создал локально, но работал нормально для репо, клонированного из GitHub.