git svn和私人分支机构合作?

时间:2011-10-03 06:26:21

标签: git merge git-svn rebase

这里有新的git用户。我想使用git,但我在SVN环境中。从我读过的一些书和一些简单的试验中,我遇到了一些令人不安的陷阱,我希望能够澄清如何在没有同事想要杀死我的情况下开始。

我希望我的工作流程为:

  • 与svn的主干保持同步的主git分支。

  • 我执行我的功能和错误工作的本地git分支。

  • 我希望经常让主要功能分支更新。

  • 当我准备好时,我想将一个功能分支与master合并,并将其提交回svn。

这是典型的工作流程吗?

最初我使用git merge来合并我的主分支和功能分支。这导致了各种冲突和问题。我后来阅读以避免使用git merge alltogether并坚持使用git rebase。那么,下面的git命令是否正确?

  • git svn rebase(将最新的更改下拉到master)
  • git checkout -b myAwesomeFeature(使功能分支工作)
  • ...做一些工作,提交我的功能分支
  • <<< TIME GOES BY>>>
  • git checkout master
  • git svn rebase(拉下新东西)
  • git checkout myAwesomeFeature
  • git rebase master(将svn trunk的内容放入我的功能分支)
  • <<<准备推动我的特色分支>>>
  • git checkout master
  • git rebase myAwesomeFeature(快进大师头以获取我的功能)
  • git svn dcommit(最终发布)

任何建议或建议,以帮助有抱负的git用户生活在一个svn世界将是非常感谢。感谢

1 个答案:

答案 0 :(得分:2)

您的工作流程与我的工作流程大致相同。如果你只是提交到svn主干,那就足够了。当你提交多个svn分支时,它会变得复杂,其中rebase不仅会合并内容,还会更改指向的svn分支,在这种情况下,当你需要提交到一个svn分支目标git时,你只能git cherry-pick如下所述:Overcome git svn caveats

同样值得理解的是,SVN无法处理非线性历史记录并且git merge不能与它一起使用:git svn workflow - feature branches and merge