Git-svn:创build并推送一个新的分支/标签?
在使用git-svn和-s
选项( git svn clone http://server/repo -s
)克隆一个SVN仓库之后,如何创build一个分支或标记并将其推送到仓库中的相关分支/标记目录什么时候dcommit
?
例如; 如果我要使用git在本地创buildfoobar
分支( git checkout -b foobar
)我怎么能让git-svn在服务器上创build分支( http://server/repo/branches/foobar
)?
我正在使用Git 1.5.5.6。
请注意:
下面接受的方法不适用于Git 1.5.5.6,因为没有git svn branch
方法。 我仍然在寻找一个解决scheme,这不涉及到解决与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分支存在之前创build了本地分支,并且您现在想将本地分支推送到Subversion分支中,则可以执行以下操作:
从您创build本地分支的版本创buildsvn分支
$ svn cp http:// svn-repo / my_app / trunk @ 123 http:// svn-repo / my_app / branches / feature1
获取新的svn分支,以便你的git仓库知道它
$ git svn fetch
svn分支现在应该被添加为你的git仓库中的一个远程仓库
$ git branch -a * feature1 主 遥控器/优点1
此时你的遥控器仍然是中继线。 您需要将您的本地分支指向新的远程分支。 您可以通过从远程分支获取本地分支来完成此操作:
$ git rebase remotes / feature1
现在您的本地分支引用了您的远程分支,您可以将更改提交到它。 首先做一个干运行,所以你有信心你的改变将进入你的远程分支:
$ git svn dcommit --dry-run 致力于http:// svn-repo / my_app / branches / feature1
现在你可以改变你的远程分支
$ git svn dcommit
大多数方法会告诉你首先分支Subversion,然后创build一个跟踪远程分支的本地分支。 但是我经常不提前决定我的本地分支是否应该跟踪一个远程分支。 我经常在本地分支,并且无意推送到远程分支进行更改。 如果我稍后决定将我的本地分支提交到远程分支,则执行上述步骤。
我只是想指出,你不应该从你已经在不同的git分支中拥有的东西上分支到最近创build的分支上。 然后git svn dcommit将会继续推送到主干。 至less这对我来说是一个问题。
相反,如果你想从旧的git分支的变化,到这个新的svn分支,使用,如樱桃采摘。