git-svn - 克隆了一个分支,现在dcommit到另一个分支?

时间:2012-02-05 11:26:35

标签: git svn git-svn

我一直在使用git-svn远程处理尖峰以获得新功能。现在我想将我的更改提交到SVN,但是在不同的SVN分支上,而不是我第一次克隆的。我怎么做 ?

原来的分支发生了变化,我还没准备好将两者合并。我想从原始分支创建一个新的SVN分支,并提交我在git中的更改。

我只有一个SVN分支的浅层克隆:

git svn clone -r:HEAD svn://***/branches/main
git branch MySpike
git checkout MySpike
// Did some work, a lot of commits.

如何将我的更改提交回另一个SVN分支?可能吗 ?

2 个答案:

答案 0 :(得分:1)

设法配置两个svn分支后(只需修改.git / config文件)。以下是如何将名为 cool / feature 的分支中 svn / original / branch 之上的所有代码重新绑定到另一个svn分支 svn / another / branch

git rebase --onto svn/another/branch $(git merge-base svn/original/branch cool/feature) cool/feature

答案 1 :(得分:1)

扩展the.malkolm的回答:

如果您查看.git/config,就会找到像fetch = branches/main:refs/remotes/git-svn这样的行。添加另一个类似的行,引用要提交的远程分支的名称,以及在本地提供它的名称(或者,对于Subversion主干,fetch = trunk:refs/remotes/trunk)。

然后运行git svn fetch。那将下载你刚刚添加的分支的历史记录;如果这是你需要的,可以随意限制它的修改。

然后重新绑定到新分支,并从那里提交!

git rebase $(git merge-base remotes/git-svn MySpike) MySpike --onto remotes/newbranch
git svn dcommit