我们当前的svn结构如下所示:
trunk
-- project
-- projectDao
-- projectResources
branches
-- project-1.0
-- projectDao-1.0
-- projectResources-1.0
-- project-2.0
-- projectDao-2.0
-- projectResources-2.0
tags
-- project-1.0.0
-- ...
Run Code Online (Sandbox Code Playgroud)
更糟糕的是,项目-1.0从projectDao(每个单独的移动提交)的项目projectDao-1.0中分支出来.理想情况下会是这样的.
这是提交日志:
trunk
-- project
-- projectDao
-- projectResources
branches
-- 1.0
---- project
---- projectDao
---- projectResources
-- 2.0
---- project
---- projectDao
---- projectResources
tags
--1.0.0
----project
---- ...
Run Code Online (Sandbox Code Playgroud)
这是有道理的.然后我们应该从trunk分支到1.0而不是2个不同的提交.
我们现在想要(永久地)切换到git,我不知道应该从这开始.
我真的不明白我应该怎么做.当我只是使用标准布局git克隆我的存储库时,我得到了一些东西.
* master
remotes/project-1.0
remotes/project-1.0@3
remotes/project-2.0
remotes/project-2.0@10
remotes/projectDao-1.0
remotes/projectDao-1.0@4
remotes/projectDao-2.0
remotes/projectDao-2.0@11
remotes/projectResources-1.0
remotes/projectResources-1.0@5
remotes/projectResources-2.0
remotes/projectResources-2.0@12
remotes/tags/project-1.0.0
remotes/tags/projectDao-1.0.0
remotes/tags/projectResources-1.0.0
remotes/trunk
Run Code Online (Sandbox Code Playgroud)
这就是gitg产生的

我不知道如何使用rebase来实现这一点:
* master
remotes/1.0
remotes/2.0
remotes/tags/1.0.0
remotes/trunk
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,您希望将导入的分支更改为1.0分支中的目录.另外,在维护svn存储库时,不要提及这是永久迁移还是git-svn checkout.
如果这只是一个git-svn结账,目标是继续使用原始SVN作为中央存储库,我只需要在不使用标准布局开关的情况下进行结账并在SVN目录中工作.它有点脏,但在推回SVN时没有问题.
如果要转换存储库,请向所有分支添加提交,将该分支的内容放入根目录中,然后将分支合并在一起.您不会在GIT历史中使用旧的分支结构丢失SVN历史记录,但未来将是新式的.
只有在您想要转换所有历史记录的情况下,您才需要创建目录和rebase.