197

我有一个跟踪 svn 存储库的 git 存储库。我使用--stdlayout.

我通过创建了一个新的本地分支git checkout -b foobar

现在我希望这个分支最终在…/branches/foobarsvn 存储库中。

我该怎么做?

(剪掉了很多调查性文字。如果你在乎,请查看问题历史)

4

3 回答 3

285

我知道这个问题已经回答了一段时间,但是在阅读它之后,我可能会帮助添加特定 git svn branch 命令的示例并将其与典型的工作流程相关联。

就像 kch 回答的那样,使用git svn branch. 这是一个完整的例子,(注意-n试运行测试):

git svn branch -n  -m "Branch for authentication bug" auth_bug

如果一切顺利,服务器会回复如下答案:

将r8914 处的https://scm-server.com/svn/portal/trunk复制到https://scm-server.com/svn/portal/branches/auth_bug ...

如果没有-n开关,服务器可能会添加如下内容:

找到可能的分支点:https : //scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug,8914

找到分支父级:(refs/remotes/auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

跟随父母与 do_switch

成功跟随父 r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(参考/遥控器/auth_bug)

最好的部分是,现在您可以根据远程分支创建本地分支,如下所示:

git checkout -b local/auth_bug auth_bug

这意味着“签出并创建名为的本地分支auth_bug并使其遵循远程分支(最后一个参数)auth_bug

使用dcommitwith --dry-run( -n) 测试您的本地分支是否在该远程分支上工作:

git svn dcommit -n

SVN 服务器应该回复新的分支名称:

致力于https://scm-server.com/svn/portal/branches/auth_bug ...

于 2009-12-15T23:00:22.247 回答
65

从 git v1.6.1 开始,git svn branch可用。

来自 git 文档:

    分支
        在 SVN 存储库中创建一个分支。

        -m,--消息
            允许指定提交消息。

        -t,--标签
            使用 tags_subdir 而不是 branches_subdir 创建标签
            在 git svn init 期间指定。

以前版本的 git 不提供创建 svn 分支的方法。

于 2008-11-05T20:36:59.710 回答
4

@kch 我刚刚(2008 年 12 月 7 日)编译了 git 的 v1.6.1-rc1 标签,它确实包含 git svn branch 命令和它的文档。所以 git 的 v1.6.1 版本应该(希望)包含这个命令。

于 2008-12-08T01:05:34.347 回答