我有一个现有的git存储库:
my-repo/
.git/
foo/
foo-content-goes-here
bar/
bar-content-goes-here
我希望获得以下代码库结构:
my-foo-repo/
.git/
foo-content-goes-here
my-bar-repo/
.git
bar-content-goes-here
我看了一下将子目录移动到单独的Git仓库中,它几乎能满足我的需求。
我运行了以下命令:
$ cd path/to/my-repo/../
$ git clone --no-hardlinks my-repo foo-repo
$ cd foo-repo
$ git remote rm origin
$ git filter-branch --tag-name-filter cat --subdirectory-filter foo \
--prune-empty -- --all
$ git reset --hard
$ git gc --aggressive
$ git prune
我说这个方法几乎可行。但是有以下问题:
git gc --aggressive
步骤需要超过2个小时才能完成我的代码库。我有13个需要从当前单一仓库中提取的代码库。我可以编写脚本来自动化此过程,但希望得到任何加快速度的建议?git log
和gitk
显示了我新 foo-repo 的预期提交记录。gitX 显示了我预期的提交记录以及旧历史的不相关树。foo-repo 目录的大小比我预期的要大得多,因此可能还有一些需要清理的东西。我不确定如何清除这些内容?在推送之前是否需要清除它们?