假设您拥有存储库:
myCode/megaProject/moduleA myCode/megaProject/moduleB
随着时间的推移(月),您重新组织项目.重构代码以使模块独立.megaProject目录中的文件将移动到它们自己的目录中.强调移动 - 保留这些文件的历史.
myCode/megaProject myCode/moduleA myCode/moduleB
现在您希望将这些模块移动到他们自己的GIT仓库中.只留下megaProject的原件.
myCode/megaProject newRepoA/moduleA newRepoB/moduleB
记录该filter-branch
命令是为了执行此操作,但是当文件移出目标目录之外时,它不会跟踪历史记录.因此,历史记录从文件移动到新目录开始,而不是文件的历史,然后它们存在于旧的megaProject目录中.
如何基于目标目录拆分GIT历史记录,并遵循此路径之外的历史记录 - 只保留与这些文件相关的提交历史记录而不是其他内容?
关于SO的众多其他答案主要集中在拆分回购 - 但没有提及拆分和跟随移动历史.