Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gitsvn:创建&;推送新的分支/标签?_Git_Git Svn - Fatal编程技术网

gitsvn:创建&;推送新的分支/标签?

gitsvn:创建&;推送新的分支/标签?,git,git-svn,Git,Git Svn,使用git SVN和-s选项(git SVN clone)克隆SVN存储库之后http://server/repo -当dcommiting时,如何创建分支或标记并将其推送到存储库中的相关分支/标记目录 比如,;如果我使用git在本地创建foobar分支(git checkout-b foobar),我如何让git svn在服务器上创建分支(http://server/repo/branches/foobar) 我正在使用Git 1.5.5.6。 请注意: 下面公认的方法不适用于Git 1.5

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

比如,;如果我使用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分支
方法。我仍在寻找一种解决方案,它不涉及直接与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

我只是想指出,您不应该从另一个git分支中已有的内容重新设置到最近创建的分支上。git svn dcommit随后将推送到主干。至少这对我来说是个问题


相反,如果您想将旧git分支的更改拉到新的svn分支上,请使用cherry pick。

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

$ 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
获取分配给本地分支机构的svn分支机构修订

$git svn info

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

根据创建本地分支的修订创建svn分支

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

获取新的svn分支,以便您的git repo了解它

$git svn fetch

svn分支现在应该添加为git repo中的远程分支

$git分行-a
*特点1
主人
遥控器/功能1

此时,您的遥控器仍将处于中继状态。您需要将本地分支指向新的远程分支。您可以通过从远程分支重新设置本地分支的基址来实现这一点:

$git重新设置基础遥控器/功能1

既然本地分支引用了远程分支,您就可以将更改提交到它。首先进行试运行,以便您确信您的更改将进入远程分支:

$git svn dcommit--试运行
承诺http://svn-repo/my_app/branches/feature1

现在,您可以将更改提交到远程分支

$git svn dcommit


大多数how-tos会告诉您首先分支subversion,然后创建跟踪远程分支的本地分支。但我通常不会提前决定本地分支是否应该跟踪远程分支。我经常在本地分支,并在不打算推送到远程分支的情况下进行更改。如果我以后决定将本地分支提交到远程分支,我将执行上述步骤。

这对我的git版本1.5.5.6不起作用-没有这样的命令
git svn branch
git svn branch
是在v1.6.1中添加的。我建议升级,因为1.5.5.6已经有一年半的历史了。如何与svn标签一起使用它。我使用
git svn tag-m“tag description”0.0.2
创建svn标记。现在我想在git中设置适当的标记。我该怎么做?ThanksIt也是一个很好的实践,在您创建本地分支后,通过执行git v1.8.3.2中的
git svn info
.FYI,检查您的本地分支是否指向正确的远程分支。第二个命令不再起作用。您无法再使用此语法跟踪SVN分支,请参阅以下问题以了解更多信息:我刚刚尝试了此方法(将旧分支合并到新分支,然后是DCOMIT),并将其提交到正确的SVN分支(而不是主干)。使用msysgit 1.7.9。我的意思是,如果在git中有branch1和branch2,希望在svn中创建新的branch1,然后在git中从branch2重新构建branch1基础。之后的数据提交将转到trunk(为我做的)。也许是@pestrella的建议,这不是问题。无论如何,这是一个次要的问题。@gd:我认为这应该是公认的答案,因为它实际上回答了所问的问题。也就是说,除非接受的答案假设在键入这些命令之前已经创建并入侵了本地分支。我在运行
git svn fetch
@SnapDragon时没有看到新分支。您可能必须执行
git svn fetch--all
,才能看到所有远程分支(包括svn分支)。这是确定的答案。谢谢!对于我之前的评论,答案是,是的,你知道。