2012-03-02 151 views
1

我的常规git-svn工作流程是在本地分支上完成我的工作,然后合并到master并从那里将git svn dcommit记录到svn中继上。,如何更改git分支正在跟踪的svn分支?

但是,在我当前的本地分支(foo)中,我意识到这项工作将会持续一段时间,然后我会很乐意将它提交到主干,而其他开发者可能在此之前参与其中。我想通过svn分支“支持它”,以便我的工作在服务器上。

我创建从目前的树干一个新的svn分支(svnFoo),我基本上要“动” foo这样,当我svn dcommit从所有其提交获取记录在svnFoo,而不是trunk

这样做的最好方法是什么?

回答

1

git rebase是你的朋友在这里。假设您创建从本地master分支当地foo分支,你已经做了近git svn fetch您的本地Git仓库知道远程svnFoo分支,你想要的魔法命令是这样的:

git rebase --onto remotes/svnFoo $(git merge-base master foo) foo 

这将找到从master分支foo的提交,然后在svnFoo分支的顶部重播所有提交到foo分支的头部的提交。随后的git svn dcommit s将提交到Subversion svnFoo分支,而不是中继。

+0

这样做了,谢谢! – 2012-03-05 16:54:00