繁体   English   中英

Git-svn:创建并推送一个新的分支/标签?

[英]Git-svn: create & push a new branch/tag?

使用带有-s选项的git-svn克隆SVN存储库( git svn clone http://server/repo -s )之后,如何创建分支或标记并将其推送到存储库中的相关分支/标记目录什么时候dcommit

例如; 如果我使用git在本地创建一个foobar分支( git checkout -b foobar )我怎么能让git-svn在服务器上创建分支( http://server/repo/branches/foobar )?

我正在使用Git 1.5.5.6。


请注意:

下面接受的方法不适用于Git 1.5.5.6,因为没有git svn branch方法。 我仍在寻找解决方案,不涉及直接使用svn。

您可以阅读本教程中的所有细节,但要点基本上如下:

$ git svn branch -m "Topic branch" my_topic            # Create SVN branch called "my_topic"
$ git checkout --track -b my-topic remotes/my_topic    # Create the Git branch for "my_topic"
# Hack hack hack...
$ git svn dcommit --dry-run    # Make sure you're committing to the right SVN branch
$ git svn dcommit              # Commit changes to "my_topic" branch in SVN

如果您在subversion分支存在之前创建了本地分支,并且现在想要将本地分支推送到subversion分支,则可以执行以下操作:

获取分配给本地分支的svn分支修订

$ git svn info

从输出中, URL字段将是当前的svn分支路径,而Revision字段将是subversion版本号

从您创建本地分支的修订版创建svn分支

$ svn cp http://svn-repo/my_app/trunk@123 http://svn-repo/my_app/branches/feature1

获取新的svn分支,以便你的git repo知道它

$ git svn fetch

svn分支现在应该作为远程添加到你的git repo $ git branch -a * feature1 master remotes/feature1

此时你的遥控器仍然是后备箱。 您需要将本地分支指向新的远程分支。 您可以通过从远程分支重新定位本地分支来实现此目的: $ git rebase remotes/feature1

现在您的本地分支引用了您的远程分支,您可以将更改提交到它。 首先进行干运行,以确保您的更改将进入远程分支: $ git svn dcommit --dry-run Commiting to http://svn-repo/my_app/branches/feature1

现在您可以将更改提交到远程分支$ git svn dcommit

大多数操作方法会告诉您先分支subversion,然后创建一个跟踪远程分支的本地分支。 但我经常不提前决定我的本地分支机构是否应该跟踪远程分支。 通常我在本地分支,并且无需推送到远程分支进行更改。 如果我后来决定将我的本地分支提交到远程分支,我执行上述步骤。

我只是想指出,你不应该从你已经在不同的git分支中拥有的东西重新绑定到你最近创建的分支。 然后git svn dcommit将推送到主干似乎。 至少这对我来说是一个问题。

相反,如果你想将旧的git分支中的更改提取到这个新的svn分支上,请使用例如cherry-pick。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM