在git-svn中,如何更改git分支跟踪的svn分支?

时间:2012-03-02 17:23:42

标签: git branch git-svn

我正常的git-svn工作流程是在本地分支上完成我的工作,然后从那里合并到master和git svn dcommit以将我的提交记录到svn trunk上。

然而,在我当前的本地分支机构(foo)中,我意识到这项工作将会存在一段时间,然后我觉得将其提交到主干,并且其他开发人员可能会参与其中在此之前。我想"支持它"通过svn分支,以便我的工作在服务器上。

我已经从当前主干创建了一个新的svn分支(svnFoo),我基本上想要"移动" foo以便当我svn dcommit时,所有提交都会记录在svnFoo而不是trunk上。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

git rebase是你的朋友。假设您从本地foo分支创建了本地master分支,并且您已经完成了最近的git svn fetch,因此您的本地Git存储库知道远程svnFoo分支,你想要的魔法命令是:

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

这将找到您从foo分支master的提交,并在foo之上重播从那里的所有提交到svnFoo分支的头部科。随后的git svn dcommit将提交到Subversion svnFoo分支而不是主干。