切换svn分支git dcommits

时间:2011-07-18 07:58:43

标签: git svn git-svn branching-and-merging

我有master dcommit来自(及rebase)Subversion trunk

我创建了一个中间Subversion分支tc,用于合并来自2个不同分支的更改,使用:

git branch master
git svn branch tc -m "Branch for merging"
git checkout -b tcl --track tc
git merge cat #Another branch, whose changes I merged here
git commit -m 'Merged changes from cat branch'
git svn dcommit

由于一切都很好,我想将其推广到trunk。我跟着做了:

git branch master
git merge tcl
git svn dcommit

现在,因为master从另一个指向不同Subversion分支的分支合并,所以它尝试提交到Subversion分支tc。我希望它致力于Subversion trunk

是否有git svn switch或类似的内容?

我知道我的工作流程不是最优的,也欢迎任何改进它的建议。

2 个答案:

答案 0 :(得分:4)

正如this question中所述,在git merge的存储库中使用git-svn并不是一个好主意。

相反,您应该将更改“合并”到master中的是:

git checkout master
git format-patch --stdout master..tcl | git am
git svn dcommit

在这种情况下,git merge的问题在于它还会将git-svn的{​​{1}}网址设置为SVN master分支。 tcformat-patch组合仅自行更改。

答案 1 :(得分:1)

AFAIK --no-ff合并将按您想要的方式进行:

git branch master
git merge --no-ff tcl
git svn dcommit