【问题标题】:How to switch svn branches using git-svn?如何使用 git-svn 切换 svn 分支?
【发布时间】:2009-04-08 07:49:23
【问题描述】:

复制

How do I make git-svn use a particular svn branch as the remote repository?

我正在使用 git-svn 来跟踪其他人在 svn 上的开发。我试图弄清楚如何使用 gti-svn 从一个 svn 分支切换到另一个。我能找到的所有示例都在谈论使用 svn switch 作为切换位置而不是实际分支的方法。

基本上,我想从 /svn/branch/1.3 而不是 /svn/branch/1.2 开始 使用 svn 获取。

【问题讨论】:

  • 原来这是重复的。对不起。
  • 我没有看到 dup。你在哪里看到的?
  • 我编辑了您的问题以提供链接。

标签: svn git git-svn


【解决方案1】:

在通过 git-svn 处理 svn 分支时,这些命令对我非常有用:

#create local Git branch that mirrors remote svn branch

git checkout -b local/RELEASE-0.12 RELEASE-0.12 
#will connect with a remote svn branch named ‘RELEASE-0.12′

# -n will show which svn branch you will commit into:
git svn dcommit --dry-run 

请参阅我在justaddwater.dk 上的文章中的完整说明。

【讨论】:

  • 我能够做到这一点,但我的语法不同git checkout -b branchname origin/branchname
【解决方案2】:

如果您已正确克隆了 SVN 存储库(使用 -T -b -t-s),您应该能够使用 git 分支命令,例如:

git reset --hard remotes/branch

git checkout branch

等等

【讨论】:

  • 如果我的本地存储库中已经有更改,我推送到 github 上的单独 git 存储库怎么办?我最初使用 git svn clone svn/branch/1.2 创建了 repo
  • git checkout 分支不会破坏您的更改。 git reset --hard 可以。
  • 如果您在此处使用 reset --hard,您将清除在远程/分支上本地所做的任何更改。
  • 我不拥有 svn 存储库,显然只有分支被公开(作为版本)。所以这并不是另一个请求的真正副本。在这种情况下,我无法执行 git branch -r 后跟 git checkout -b
  • 基本上, git branch -r 不会显示 1.3 分支,只是 1.2 下的东西。
【解决方案3】:

根据我的经验,这样做效果很好

git checkout -b RELEASE-0.12 RELEASE-0.12

local/ 前缀不是必需的,我不那么混淆了。旧的RELEASE-0.12 分支已经是一个远程分支,所以 git 不会把它和新的分支混淆。

上面的命令不会创建跟踪分支关系。但这不是必需的,git svn rebase 无论如何都会按预期工作。

【讨论】:

    猜你喜欢
    • 2011-10-07
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多