克隆git-from-svn存储库并获取所有远程分支

del*_*ego 3 svn tags git version-control branch

我很难理解如何能够从Subversion克隆git存储库,然后将该存储库克隆到另一台机器(git-to-git),并且仍然可以访问所有原始的Subversion分支和标记.这就是我所做的,以及我遇到障碍的地方.

首先,在机器A上,我将我的Subversion存储库克隆到git存储库中:

[machine A]$ git svn clone -s http://svn.repo.url/MyProject
Run Code Online (Sandbox Code Playgroud)

这给了我一个git存储库,其中包含我原始Subversion存储库的完整历史记录和所有分支和标记:

[machine A]$ git branch -r
* master
  remotes/v1
  remotes/v1.1
  remotes/v1.2
  remotes/test_migration
  remotes/tags/20100104
  remotes/tags/20100308
  remotes/trunk
Run Code Online (Sandbox Code Playgroud)

现在,在机器B上,我想克隆那个git存储库,并且仍然可以访问所有原始的Subversion分支和标记.首先,我克隆了存储库:

[machine B]$ git clone machine.a:git/MyProject
Run Code Online (Sandbox Code Playgroud)

这让我得到了git存储库的克隆...但我没有看到任何远程分支或标记:

[machine B]$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

不管是什么形式的git checkout --track -b [branch] origin/[branch]我尝试,我不能让机器B上创建一个分支来跟踪远程之一,最初是从- svn的分支......也不会一个git svn fetch,git svn pull或其他任何东西我可以尝试在远端拉机器A上的存储库中的分支和标签.我做错了什么?

Aar*_*lla 5

我认为这是因为默认情况下git不会克隆远程分支.使用此命令配置克隆

git config --add remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
Run Code Online (Sandbox Code Playgroud)

在你做初始git fetch克隆原始回购之前.有关详细信息,请参阅文档(搜索上面的字符串以查找说明).

另请阅读"CAVEAT"部分.Subversion不是git,你必须了解一些重要的差异,否则你损坏你的git或你的svn repo.