这将设置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 / heads / 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
只要您具有写许可权并且该目录尚不存在,就可以用所需的任何路径代替。