Git分支与SVN分支有何不同?

时间:2014-12-11 08:19:53

标签: git svn migration branch

我即将从SVN迁移到Git。

我读到的关于迁移的所有文章都谈到了如何使用Git而不是SVN意味着一直在进行分支。

我没有得到的是Git分支与SVN分支的区别。他们有什么不同?

2 个答案:

答案 0 :(得分:0)

我认为主要区别在于:

在git(以及所有其他分布式版本控制(DVCS)系统)中,每个开发人员总是隐式地拥有自己的分支,因此合并很容易,因为如果合并很困难,系统将无法使用。在DVCSes中,合并在历史记录中很明显,因为它们具有多个父变更集。

在SVN中,每个人都有完全相同的项目树,如果你明确要求,你只能得到一个分支。合并在SVN中很难。自动合并在很长一段时间内都没有得到支持,后来他们使用特殊的“svn:mergeinfo”属性进行了修改,该属性可以被用户修改,搞砸了所有内容。合并并没有真正出现在历史中,除非你阅读这个特殊属性并手动重建发生的事情。

你一直在使用SVN,所以你已经接受过“合并很难,因此分支很糟糕”的培训。您需要忘记所有SVN培训。 DVCS是不同的。合并是你的朋友。每次你犯下分支都会发生;因为不一定有中央服务器,任何数量的人可能已经使用相同的父级提交了任意数量的变更集,并且所有这些变更集最终必须合并在一起。

本教程适用于Mercurial(另一个DVCS),但这些概念也适用于git。它很好地涵盖了这些概念,专为来自SVN的人设计:http://hginit.com

**特别是在git中,人们经常 rebase 而不是合并,但这是基本的想法,而不是每个团队都鼓励这样做。

答案 1 :(得分:-2)

如果你熟悉linux,svn的分支是cp命令,git分支是ln