为什么git-svn clone将'master'设置为随机分支?

时间:2010-11-19 17:10:06

标签: svn git version-control git-svn

我正在尝试将现有的svn存储库移动到git。我们不需要在两者之间进行任何同步(因此没有git svn fetch es或dcommit s) - 我们只是移动过来就是这样。

我发出此命令来创建git存储库:

git svn clone -s https://server/repos/my_repo

这很好。但是,当我cd进入新的my_repo目录时,其中的文件是其中一个分支(不是主干)的一部分。

执行git branches -a收益:

* master
  modelExperimentalTrunk
  modelExperimentalTrunk@719
  dRefactoring
  reorganise
  stableV396
  tags/v1.0
  trunk

我在主分支上,但我沙盒中的文件实际上来自dRefactoring分支(我们较为模糊的分支之一)。

问题:

  • 为什么master分支未与trunk相关联?
  • 有没有办法将其重新连接到trunk?或者可以在git svn clone阶段完成吗?
  • 另外,鉴于这将在服务器上,有没有办法git svn可以创建一个--bare存储库?

1 个答案:

答案 0 :(得分:7)

将主分支重新连接到主干很简单,只需运行:

git checkout master
git reset --hard trunk

这会切换到主分支(如果不是这种情况)并将其重置并将工作树重置为主干分支的状态。在此之后,您可以安全地删除主干分支。

git-svn不支持开箱即用的裸存储库。阅读http://gsocblog.jsharpe.net/archives/12了解更多详情。但我认为您不需要这个复杂的解决方案,因为您只想对SVN存储库进行一次导入。

因此,您可以创建已经存在的git存储库的裸克隆,然后进行设置。