将子目录拆分为单独的分支

时间:2015-07-14 22:12:53

标签: git git-svn git-subtree

我正在尝试将我的SVN项目导入Git。我在SVN中有以下目录结构:

trunk
  -- AAA
  -- UUU
  -- PPP
  -- QQQ

在Git中,我希望这是:

master branch
  -- AAA
  -- UUU
PQ-branch
  -- PPP
  -- QQQ

如何在保留目录的所有提交历史记录的同时实现此目的?

我尝试使用Git子树拆分将PPP和QQQ拆分为单独的分支,但如何从主分支中删除PPP和QQQ的提交历史记录?

我尝试使用带有--tree-filter的filter-branch,但这没有帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用git svn clone将不同的子目录分别克隆为分支。一旦你准备好这个,棘手的部分开始,即重写git历史,你缝合/加入两个分支,AAA和UUU,作为主和休息作为分支PQ。

您可以使用git graftgit replace执行此操作。在重写git历史记录时要小心。您可以在https://git.wiki.kernel.org/index.php/GraftPointhttps://git-scm.com/blog/2010/03/17/replace.html阅读更多信息。

要找到移植点,您需要找到两个分支(AAA和UUU)之间的最后一个常见提交,这是您的移植点。找到这个的最简单方法是在两个分支中搜索具有相同时间戳的提交。一旦找到此提交,您就有了移植点