【问题标题】:Split subdirectories into separate branch将子目录拆分为单独的分支
【发布时间】:2015-10-03 18:43:14
【问题描述】:

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

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

在 Git 中,我希望它是:

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

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

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

我尝试将 filter-branch 与 --tree-filter 一起使用,但这没有帮助。

【问题讨论】:

    标签: git git-svn git-subtree


    【解决方案1】:

    您可以使用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)之间的最后一个共同提交,这是您的移植点。找出这一点的最简单方法是在两个分支中搜索具有相同时间戳的提交。一旦你找到这个提交,你就有了你的嫁接点

    【讨论】:

    • 谢谢。我能够将文件夹克隆到不同的子目录中,然后将它们合并到我想要的分支结构中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    相关资源
    最近更新 更多