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上的存储库中的分支和标签.我做错了什么?
我认为这是因为默认情况下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.