Git和SVN如何处理私有分支?

5
新的 Git 用户在此。我想要使用 Git,但我处于 SVN 环境中。通过一些书籍和简单的实验,我遇到了一些麻烦的问题,希望能够澄清如何开始工作,而不会让我的同事想杀了我。
我想要的工作流程是:
- 一个主 Git 分支,与 SVN 的主干保持同步。 - 本地 Git 分支,用于处理我的特性和错误。 - 我希望经常将特性分支与主分支同步更新。 - 当我准备好时,我想将特性分支合并到主分支中,并将其提交回 SVN。
这是一个典型的工作流程吗?
最初我使用 git merge 合并我的主分支和特性分支。这导致了各种冲突和问题。后来我注意到应该避免使用 git merge,而应该坚持使用 git rebase。那么,以下 Git 命令是否正确呢?
- git svn rebase(拉取最新的主干更改) - git checkout -b myAwesomeFeature(创建一个特性分支进行工作) - ……进行一些工作,将更改提交到我的特性分支 - <<< 时间过去 >>> - git checkout master - git svn rebase(拉取新的内容) - git checkout myAwesomeFeature - git rebase master(将 SVN 主干的内容合并到我的特性分支中) - <<< 准备推送我的特性分支 >>> - git checkout master - git rebase myAwesomeFeature(快进主分支,以获得我的特性内容) - git svn dcommit(最终发布)
有什么建议或建议可以帮助一位渴望在 SVN 世界中使用 Git 的用户吗?谢谢。
1个回答

2
你的工作流程基本和我一样。如果你只提交到svn主干,那就够好了。但是当你提交到多个svn分支时,rebase不仅会合并内容,还会更改指向的svn分支,这时你只能使用 git cherry-pick 将需要提交到一个svn分支的提交引用到另一个git分支中,具体讨论请看此链接:Overcome git svn caveats 此外,值得注意的是SVN不能处理非线性历史,因此无法与git merge一起使用,请参考此链接:git svn workflow - feature branches and merge

1
实际上,可以使用git mergegit svndcommit将愉快地将具有多个父级的提交推送到子版本控制系统,尽管子版本控制系统只会将其视为常规提交,并包含来自分支的所有更改。一旦您开始在git中协作(例如逐渐切换),这甚至是唯一的方法。 - Jan Hudec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接