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

D.C*_*.C. 5 git merge git-svn rebase

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

我希望我的工作流程是:

  • 一个与svn的主干保持同步的主git分支.

  • 本地git分支,我做我的功能和bug工作.

  • 我想经常使用master更新功能分支.

  • 当我准备好时,我想将一个功能分支与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世界将非常感激.谢谢

Lak*_*sad 2

你的工作流程和我的差不多。如果您只提交到 svn trunk 就足够了。当您提交到多个 svn 分支时,情况会变得复杂,其中 rebase 不仅会合并内容,还会更改指向的 svn 分支,在这种情况下,只有git cherry-pick当您需要提交到一个 svn 分支,目标是另一个 git 分支时,才可以,如下所示这里讨论:克服 git svn 警告

还值得理解的是 SVN 无法处理非线性历史记录,并且 git merge 不能与它一起使用:git svn 工作流程 - 功能分支和合并