我是版本系统的新手,并试图决定使用哪一个。有很多信息,但也许有专家可以通过回答以下问题来帮助我。我发现了一个版本/分支模型,它非常类似于我的要求:
http://nvie.com/posts/a-successful-git-branching-model/
我理论上可以用SVN轻松实现这一点吗?像Hotfix和Bugfix分支一样,每个分支合并成多个不同的分支?为什么Git的“合并”应该更容易?
答案 0 :(得分:5)
在很多StackOverflow答案中建议您链接到的工作流程。但一般来说,主要的想法是将“好代码”和“开发代码”分开 - master
和development
分支。此外,保持功能分开,直到它们准备好合并到development
分支 - 即features
和hotfix
分支。
毫无疑问,使用SVN完全可以实现该工作流程或非常类似的工作流程 - 您使用SVN Branches。
周围有whole bunch版本控制系统,Nvie Git工作流程非常通用 - 大多数版本控制系统都可能使用通用工作流程。
我理论上可以用SVN轻松实现这一点吗?像Hotfix和Bugfix分支一样,每个分支合并成多个不同的分支?
就个人而言,我认为SVN中的分支并不像Git那样容易。 Linus Torvalds agrees - 所以他设计了Git围绕分支的想法。
为什么Git的“合并”应该更容易?
Git是围绕分支的想法而设计的。制作分支,使用分支,将两个分支合并在一起,将三个分支合并在一起,将本地和远程存储库中的分支合并在一起--Git擅长分支。 SVN不是以分支为中心的,在我的(有限的)SVN体验中,将两个分支合并在一起并不总是有趣的。
如果你刚开始使用版本控制系统,我会推荐Git。为了在Git和SVN之间进行适当的比较,请检查this link。然而,我会注意到Git是一个有点大脑弯曲的人,特别是如果你是新手 - 从概念上讲,SVN更容易理解。我发现the Pro Git book非常有帮助。
答案 1 :(得分:3)
从您提供的链接:
从我来自经典的CVS / Subversion世界,合并/分支 一直被认为有点可怕(“小心合并冲突, 他们咬你了!“)和你每隔一段时间只做一次。
但是对于Git来说,这些行动非常便宜而且非常简单 被认为是您日常工作流程的核心部分之一。
就SVN而言,我赞同该声明(我没有真正有效的GIT经验)。在SVN中,合并 耗费时间,坦率地说,这很可怕。你不轻易分支。所以,我猜,答案是“不” - 如果事先知道你必须做大量的分支和合并,不要使用SVN。
答案 2 :(得分:2)
理论上 - 是的,SVN可以实现它。 但是SVN缺乏合并和分支工具。所以合并/分支与SVN有点不方便和可怕(主要问题 - 复杂的树和其他冲突)。
GIT是合并分支的大师 - 他可以解决极其困难的冲突。 它还可以让您轻松跟踪所有分支版本。
SVN与GIT的主要区别:
要了解比较情况,请查看此article
答案 3 :(得分:0)
Subversion的优势在于您始终知道特定修订版本中的特定分支/主干是否合并到您的分支(通过svn:mergeinfo),这对于挑选提交是很重要的。 Git提供了被认为可以更好地工作的合并工具。
您可以将SubGit(subgit.com)安装到您的SVN存储库中,并享有这两种方法的优势。安装完成后,SubGit创建了一个链接到该SVN存储库的Git存储库,以便对该Git存储库的任何推送都转换为SVN,反之亦然。转换是即时执行的。