【问题标题】:Cloning a git-from-svn repository and getting all the remote branches克隆 git-from-svn 存储库并获取所有远程分支
【发布时间】:2011-02-02 12:53:31
【问题描述】:

我正在努力理解如何能够从 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 上创建一个分支来跟踪远程的、最初来自 svn 的分支之一……git svn fetch、@987654327 也没有@,或者我可以尝试从机器 A 上的存储库中拉入远程分支和标签的任何其他内容。我做错了什么?

【问题讨论】:

    标签: svn git version-control tags branch


    【解决方案1】:

    我认为这是因为 git 默认不会克隆远程分支。使用此命令配置您的克隆

    git config --add remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
    

    在您执行初始 git fetch 以克隆原始存储库之前。 See the docs了解详情(搜索上面的字符串找到解释)。

    另请阅读“CAVEAT”部分。 Subversion 不是 git,您必须了解一些重要的区别,否则您破坏您的 git 或您的 svn 存储库。

    【讨论】:

    • +1,我还建议使用 git-svn--prefix=svn/(或类似)并复制 refs/remotes/svn/*。只是因为遥控器可能比需要的多。
    • 哇,太好了——我不知道我怎么错过了 git-svn 文档的那部分,但是你去吧。那个警告部分只是劝阻我不要做我想做的事......所以就是这样。 :)
    【解决方案2】:

    我想在this answer 上发表评论,但我还不允许,所以我必须发布一个新的。

    请注意,克隆 svn 遥控器后,您必须在本地初始化它们,文档中对此进行了描述。但是,引用文档:

    确保使用与服务器上相同的 URL 和 -T/-b/-t 选项。

    git config -l | grep remote 将列出主机存储库上所有远程(url、分支、忽略等)的所有配置。输出将类似于:

    svn-remote.svn/bbpress.url=http://svn.automattic.com/bbpress/trunk
    svn-remote.svn/bbpress.fetch=:refs/remotes/svn/bbpress
    

    然后将其添加到 .gitignore(注释为 # 并将 = 替换为空格)以供将来参考。克隆后使用 git config --add 和此信息,您将获得这些遥控器的精确副本。

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 2021-10-08
      • 1970-01-01
      • 2012-10-23
      • 2010-09-09
      • 2017-06-02
      • 2020-01-02
      • 1970-01-01
      相关资源
      最近更新 更多