我有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
或类似的内容?
我知道我的工作流程不是最优的,也欢迎任何改进它的建议。
答案 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
分支。 tc
和format-patch
组合仅自行更改。
答案 1 :(得分:1)
AFAIK --no-ff
合并将按您想要的方式进行:
git branch master
git merge --no-ff tcl
git svn dcommit