2

我正在将 SVN 存储库迁移到 Git。

svn结构如下图

Root
  + branches
      + b1
      + b2
      + development_branches
          + d1
          + d2
  + tags
  + trunk

这里的情况是文件夹分支包含另一个子目录 development_branches 又包含几个分支。

当我使用 svn2git 时,将其转换为 git 存储库。文件夹 development_branches 被认为是一个分支。下面是使用 svn2git 的 Git 分支结构

Root
   + b1
   + b2
   + development_branches

是否可以让 svn2git 将文件夹“development_branches”的内容视为单独的分支,或者在 Git 中有一种方法可以将文件夹 development_branches 中的文件夹标记为单独的分支?

提前致谢

4

1 回答 1

1

我不确定这是否是正确的做法,但它似乎有效。如果这不正确,欢迎您的反馈。

策略是这样的 1.从分支“development_branches”创建分支,每个子文件夹一个 2.查看新创建的分支并使用命令 git filter-branch 将根目录内容替换为子目录的内容

git filter-branch  -f --subdirectory-filter <subdirectory_name> HEAD

因此,对于问题中显示的 git 结构,我使用了以下命令

$ git checkout development_branches
$ git branch d1
$ git branch d2
$ git checkout d1
$ git filter-branch  -f --subdirectory-filter d1 HEAD
$ git checkout d2
$ git filter-branch  -f --subdirectory-filter d2 HEAD
$ git branch -d development_branches

在此之后,新的 Git 结构是

Root
   + b1
   + b2
   + d1
   + d2
于 2013-04-17T14:12:03.453 回答