我正常的git-svn工作流程是在本地分支上完成我的工作,然后从那里合并到master和git svn dcommit
以将我的提交记录到svn trunk上。
然而,在我当前的本地分支机构(foo
)中,我意识到这项工作将会存在一段时间,然后我觉得将其提交到主干,并且其他开发人员可能会参与其中在此之前。我想"支持它"通过svn分支,以便我的工作在服务器上。
我已经从当前主干创建了一个新的svn分支(svnFoo
),我基本上想要"移动" foo
以便当我svn dcommit
时,所有提交都会记录在svnFoo
而不是trunk
上。
这样做的最佳方式是什么?
答案 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
分支而不是主干。