我正在努力了解如何能够从 Subversion 克隆一个 git 存储库,然后将该存储库克隆到另一台机器(git-to-git)并且仍然可以访问所有原始的 Subversion 分支和标签。这是我所做的,以及我遇到障碍的地方。
首先,在机器 A 上,我将我的 Subversion 存储库克隆到一个 git 存储库中:
[machine A]$ git svn clone -s http://svn.repo.url/MyProject
这给了我一个 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
现在,在机器 B 上,我想克隆那个 git 存储库,并且仍然可以访问所有原始的 Subversion 分支和标签。首先,我克隆了存储库:
[machine B]$ git clone machine.a:git/MyProject
这让我得到了 git 存储库的克隆...但是我没有看到任何远程分支或标签:
[machine B]$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
无论我尝试哪种形式的 git checkout --track -b [branch] origin/[branch]
,我都无法在机器 B 上创建一个分支来跟踪其中一个远程, originally-from-svn branches... git svn fetch
、git svn pull
或任何其他我可以尝试从机器 A 上的存储库。我做错了什么?
最佳答案
我认为这是因为默认情况下 git 不会克隆远程分支。使用此命令配置您的克隆
git config --add remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
在执行初始 git fetch
以克隆原始存储库之前。 See the docs有关详细信息(搜索上面的字符串以找到解释)。
另请阅读“警告”部分。 Subversion 不是 git,并且有一些您必须了解的重要差异,否则您将破坏您的 git 或您的 svn 存储库。
关于svn - 克隆一个 git-from-svn 存储库并获取所有远程分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546432/