我有一个跟踪 svn 存储库的 git 存储库。我使用--stdlayout
.
我通过创建了一个新的本地分支git checkout -b foobar
现在我希望这个分支最终在…/branches/foobar
svn 存储库中。
我该怎么做?
(剪掉了很多调查性文字。如果你在乎,请查看问题历史)
我有一个跟踪 svn 存储库的 git 存储库。我使用--stdlayout
.
我通过创建了一个新的本地分支git checkout -b foobar
现在我希望这个分支最终在…/branches/foobar
svn 存储库中。
我该怎么做?
(剪掉了很多调查性文字。如果你在乎,请查看问题历史)
我知道这个问题已经回答了一段时间,但是在阅读它之后,我可能会帮助添加特定 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
使用dcommit
with --dry-run
( -n
) 测试您的本地分支是否在该远程分支上工作:
git svn dcommit -n
SVN 服务器应该回复新的分支名称:
从 git v1.6.1 开始,git svn branch
可用。
来自 git 文档:
分支 在 SVN 存储库中创建一个分支。 -m,--消息 允许指定提交消息。 -t,--标签 使用 tags_subdir 而不是 branches_subdir 创建标签 在 git svn init 期间指定。
以前版本的 git 不提供创建 svn 分支的方法。
@kch 我刚刚(2008 年 12 月 7 日)编译了 git 的 v1.6.1-rc1 标签,它确实包含 git svn branch 命令和它的文档。所以 git 的 v1.6.1 版本应该(希望)包含这个命令。