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

使用带有git svn branch选项(git checkout -b foobar)的git-svn克隆SVN存储库后,如何在http://server/repo/branches/foobar538ing时创建分支或标记并推送到存储库中的相关分支/标记目录?

例如; 如果我要使用git在本地创建git svn branch分支(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的解决方案。

Phillip B Oldham asked 2019-11-17T08:27:33Z
3个解决方案
71 votes

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

$ 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
mipadi answered 2019-11-17T08:28:23Z
56 votes

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

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

$ git svn dcommit

从输出中, $ git svn dcommit 字段将是当前的svn分支路径,Revision字段将是Subversion修订版号

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

$ git svn dcommit

提取新的svn分支,以便您的git repo知道这一点

$ git svn dcommit

svn分支现在应该作为git存储库中的远程添加 $ git svn dcommit

此时,您的遥控器仍将是中继。 您需要将本地分支指向新的远程分支。 您可以通过从远程分支重新部署本地分支来实现此目的: $ git svn dcommit

现在,您的本地分支引用了远程分支,您可以将更改提交到该分支。 首先进行空运行,以便您确信所做的更改将进入远程分支: $ git svn dcommit

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

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

pestrella answered 2019-11-17T08:30:23Z
0 votes

我只想指出,您不应该从其他git分支中已有的内容重新建立到您最近创建的分支。 git svn dcommit之后会推送到主干。 至少这对我来说是个问题。

相反,如果您想将更改从旧的git分支拉到这个新的svn分支,请使用例如 采摘樱桃。

yngve answered 2019-11-17T08:31:00Z
translate from https://stackoverflow.com:/questions/2490794/git-svn-create-push-a-new-branch-tag