Сплит git-репозиторий с сохранением и ограничением веток

Существуют многочисленные учебные пособия о том, как разбить большой репозиторий git (LargeRepo) на более мелкие репозитории (SmallRepoA, SmallRepoB) и сохранить коммиты. Я хотел бы сделать это с дополнительным требованием, чтобы каждое SmallRepo наследовало только те ветви и фиксации ветвей, которые имеют отношение к файлам в SmallRepo.

Для каждого SmallRepo:

  1. Не поддерживать ветку, если ветка не влияет на файлы в SmallRepo
  2. Для остальных веток удалите коммиты, которые не влияют на файлы в 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.

Другие вопросы по тегам