SVN,Git等等,版本控制软体哪款好?


除非必须要对大量的二进位文件进行版本管理,一般建议使用 Git


文无第一,武无第二。

程序员个人用的话,Git更合适一些。现在Github很流行,使用Git可以更好地参与到Github上的各种项目的使用和开发中去。当然如果能学会使用SVN的话就更好了,技多不压身嘛。SVN本身也是很优秀的版本控制软体。

在公司内部使用的话,需要考虑实际业务和领导的态度。譬如现在做Android开发的公司会用Git+Gerrit,互联网业务会用Git+Gitlab,而做传统软体的公司可能还在用SVN或者一些不是很流行的软体,譬如ClearCase,甚至还有些你连名字都没听过的版本控制软体。SVN用来管理文档、图片、image文件等二进位文件是非常合适的,尤其是使用者不局限于程序员的场景。对于策划、测试来说,SVN使用起来更加友好。领导的态度也很重要,胳膊拧不过大腿。如果领导比较保守,觉得Git难用、不安全什么的,那么就安心地用SVN吧。如果领导觉得不用Git不行的时候,自然会换的。譬如有些公司可用Git可用SVN,而客户公司是用Git的,公司还坚持只用SVN的话,会被客户鄙视的。

Git和SVN相比有几个明显的缺点:

  1. 学习曲线太陡了。要精通的话,需要花费大量的时间和精力去学习和练习。很多(懒惰的)码农已经觉得Git很难用了,对于策划、测试等来说更加是天书级别的,能准确地使用基本的几个命令和操作已经很好了。
  2. 如果大型的二进位文件比较多的话,仓库会很臃肿。虽然有些优化措施和扩展,但是因为第1点原因,一般用户使用的时候会很难受。
  3. 自身没有现成的许可权控制。一般通过托管服务来实现,譬如由Github,Gitlab,Gerrit等来完成。这要多维护一套系统,增加了成本。

但是如果你是一个程序员的话,学会并且精通这两个工具,对工作是很有帮助的。


谢邀。

2018 年,该弃用 SVN 了。

如果不得已需要用到 SVN,请参考此回答: Mac 上最好用的 SVN 客户端是什么?

几年过去,又有不少新的 Git GUI 出现,推荐 Fork - a fast and friendly git client for Mac 和 GitUp 。


建议用git,至于前面回答者提到的许可权问题,可以参考Openstack社区的管理思路,对于所有的代码在merge前进行review,让有许可权的人进行合并,解决许可权问题,或者分不同的项目来做。


泻药

我们公司最早用的是svn,用了大概4年时间,由于开发人员比较少,项目本身没有版本的概念,就两三个人协作,没有什么问题,但是,后来公司业务发展,人员扩张,svn的缺点太明显了,基本没用的分支,缺少版本管理的概念,完全无法适应稍微大一点的项目以及稍微多点人协作的项目,这个时候果断选择了git,依赖gitlab的强大功能,使用git很好的解决了svn带来的痛点再说一下许可权控制,svn可以控制目录许可权,git做不到,但是如果没有项目完整代码也无法完成开发测试,如果担心许可权问题,可以从设计角度出发,不同的模块分项目开发,也不用担心不该拥有代码的人拿到代码就这样,代码管理没有比git更好的选择,建议个人用户也选择git,养成良好习惯


谢邀

如果项目参与的人员不仅仅是开发,还有美术,产品,策划等 优先svn,因为上手难度低,而且svn没有历史包袱,对于动辄几百M甚至上G的美术作品而言不会造成代码库过于庞大(每一个美术同学修改过的版本都要进入所有人的git版本库,可想而知多恐怖),对于非开发人员的误操作容忍度极高。 如果介意svn的branch管理,则开发人员可以考虑自己本地建立一个git repo来操作,毕竟git不要求有服务端,感觉历史包袱多了随时可以推倒重来。当然如果想直接用git来管,svn拜拜,那么git-svn欢迎你。同样的道理还可以试著使用git来管理自己打算长期使用的第三方项目,你在这个项目上进行任何更改都不必担心。

如果项目参与人员主要是开发,而且管理的内容主要是代码文件,以及其他种类的小文件

建议git,其多版本管理能力和零碎文件处理效率不是svn能比的,至于历史包袱,代码文件很小,压缩后更是小得不能再小。


SVN和Git两者其实都很重要,

大概的用法:

SVN : pull, commit , push

Git : pull, add , commit ,push

基本用法上,就差一个 add

Git可以在本地,并且在你不联网的时候可以良好的工作.而SVN你需要连到公司内网才能使用.

重点

两者都必须要会,至少要会使用,因为总有公司会用得到. 况且两者其实都挺简单的,唯手熟尔 :D


推荐阅读:
相关文章