Это настроит MyABRepo;Конечно, вы можете сделать My12Repo аналогично.
git clone MyHugeRepo/ MyABRepo.tmp/
cd MyABRepo.tmp
git filter-branch --prune-empty --index-filter 'git rm --cached --ignore-unmatch DIR_1/* DIR_2/*' HEAD
Ссылка на .git / refs / original / refs /head / master остается.Вы можете удалить это с помощью:
cd ..
git clone MyABRepo.tmp MyABRepo
Если все прошло хорошо, вы можете удалить MyABRepo.tmp.
Если по какой-либо причине вы получаете сообщение об ошибке .git-rewrite, вы можете попробовать это:
git clone MyHugeRepo/ MyABRepo.tmp/
cd MyABRepo.tmp
git filter-branch -d /tmp/git-rewrite.tmp --prune-empty --index-filter 'git rm --cached --ignore-unmatch DIR_1/* DIR_2/*' HEAD
cd ..
git clone MyABRepo.tmp MyABRepo
Это создаст и использует /tmp/git-rewrite.tmp в качестве временного каталога вместо .git-rewrite
.Естественно, вы можете заменить любой путь по своему желанию вместо /tmp/git-rewrite.tmp
, если у вас есть разрешение на запись, а каталог еще не существует.