Я нашел довольно простое решение,
Идея состоит в том, чтобы скопировать хранилище, а затем просто удалить ненужную часть.
Вот как это работает:
1) Клонируйте репозиторий, который вы хотите разбить
git clone git@git.thehost.io:testrepo/test.git
2) Переместить в папку git
cd test/
2) Удалите ненужные папки и зафиксируйте его
rm -r ABC/
git add .
enter code here
git commit -m 'Remove ABC'
3) Удалите ненужные истории форм папок с помощью BFG
cd ..
java -jar bfg.jar --delete-folders "{ABC}" test
cd test/
git reflog expire --expire=now --all && git gc --prune=now --aggressive
для нескольких папок вы можете использовать запятую
java -jar bfg.jar --delete-folders "{ABC1,ABC2}" metric.git
4) Убедитесь, что в истории нет файлов / папок, которые вы только что удалили
git log --diff-filter=D --summary | grep delete
5) Теперь у вас есть чистый репозиторий без ABC,
так что просто вставьте его в новое происхождение
remote add origin git@github.com:username/new_repo
git push -u origin master
Вот и все. Вы можете повторить шаги, чтобы получить другой репозиторий,
просто удалите XY1, XY2 и переименуйте XYZ -> ABC на шаге 3