我正在处理一个使用Subversion作为代码库的项目。因为我需要进行一些还不能提交到svn服务器的更改,所以我开始使用git svn
来进行本地检查。我的设定看起来像这样:
分支:主干(跟踪svn主干)、主节点(非常接近svn中的内容)以及主题。
*------------------ trunk
\
*-----------*--------- master
\
*-------- topic
流程:
[on branch master]
$ git svn fetch
$ git svn rebase
$ git checkout -b topic
$ git rebase master
[hack hack hack]
$ git commit -a
[once upstream is ready for my changes]
$ git svn fetch
$ git checkout master
$ git svn rebase
$ git checkout topic
$ git rebase master
$ git svn dcommit
$ git checkout master
$ git svn rebase
$ git branch -d topic
假设在git svn fetch
和git svn rebase
之间没有人提交到svn,
在主分支上运行git svn rebase
基本上与在主分支上运行git rebase trunk
是一样的吗?
是否有更明智的工作流程可供使用?看起来有很多分支更改和rebasing操作。我知道我想要能够将我的工作重新映射到svn中的任何内容,但似乎我正在进行比绝对必要的rebases更多的rebasing操作。
master
分支上,我就不需要在执行git svn rebase
之前执行git svn fetch
。但是如果我在topic
分支上,git svn fetch
将会更新trunk
,但是不会影响master
和topic
分支。虽然我从来没有对我的topic
分支执行过git svn rebase
,但我只是使用了git rebase
命令。这很有趣。 - Sean McMillangit checkout master
。 - VonCgit svn dcommit
没有指定分支时会将当前HEAD上的提交推送到SVN,而不仅仅是master
分支。因此,我从我的分支向SVN提交,然后依靠在master
上进行的git svn rebase
将提交从SVN带回来。在我完成dcommit之后,我放弃了topic
分支。这样做是否合适? - Sean McMillangit svn fetch
已经更新了主干,并且此后没有人提交到主干,那么结果是否相同?当你执行git svn rebase
时,git svn
执行哪些原始操作? - Sean McMillan