【发布时间】:2019-10-15 12:14:58
【问题描述】:
我正在尝试将一个大型 repo 拆分为多个较小的 repo。目标是拆分文件夹并保留过程中的标签。
我试过了:
git filter-branch --prune-empty --subdirectory-filter my-folder develop
这正确地将my-folder 放置在新项目的根目录下,并保留了标签。但是,签出标签会导致在新仓库中看到整个旧目录结构。
所以我尝试了:
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter my-folder -- --branches=develop --tags
这导致开发分支存在旧目录结构,但是当我签出标签时,我看到子目录已正确过滤到根目录!所以标签是正确的,但不是开发分支。基本上它与第一种方法有相反的问题。
我不知道为什么第二种方法不起作用。我真的很感激任何指点!
编辑:
现在试试这个:
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter my-folder -- --all
犹豫不决,因为我预计这需要更长的时间。 这确实花费了更长的时间,但它主要是有效的。 什么没有奏效?好吧,尚未在其中创建文件夹的旧标签留在存储库中,并且在签出时包含完整(非常)旧的目录结构。我不得不 grep 并删除所有这些标签。 回购仍然没有我预期的那么小......
【问题讨论】:
标签: git split git-tag git-filter-branch