SVN对分支当做路径来授权,造成管理的负担(参见 前面的描述 ), 因此使用SVN实现灵活的特性分支开发、可靠的发布控制(维护分支冻结)很难。
企业应用Git的困惑之一是如何裁剪出适合自己的工作流。实际上Git本身已经给出范例:
$ git help workflows
理解Git的应用模型并选用合适的服务器端软件(如 Gitolite),可以定制出适合自己的工作流。 例如下表是在企业中使用Git版本控制系统的典型角色划分:
再来谈谈Git的使用,实际上Git的设计模型非常简单,理解了其设计思想,可以很容易地掌握 git reset, git checkout, git rebase, git push, git pull 等命令。
误解7:程序员不喜欢命令行
谁说Git没有好的图形工具?SVN 有 TortoriseSVN,Git 同样有 TortoiseGit。 只不过Git的命令行太好用,使得图形操作显得笨拙。
至于Windows用做开发环境是否还有前途,看看火热的iOS、Android开发、和优雅的 MacBook 知道了。
Git能做到,而SVN难以做到的事情
Git分支功能为强大,分支管理能力让SVN望尘莫及
Git可以很容易地对比两个分支,知道一个分支中哪些提交尚未合并到另一分支,反之亦然。
● 查看当前分支比other分支多了哪些提交:
$ git log other..
● 查看other分支比当前分支多了哪些提交:
$ git log ..other
我不认为SVN的分支是真正的分支,因为分支基本的提交隔离SVN没能实现。 在SVN中一次提交可以同时更改主线(/trunk)和分支中的内容, 所以判断一个分支中哪些提交未合并到另外的分支,完全不能对SVN抱有希望。
Git可以实现更好的发布控制
针对同一个项目,Git可以设置不同层级的版本库(多版本库), 或者通过不同的分支(多分支)实现对发布的控制。
● 设置只有发布管理员才有权限推送的版本库或者分支,用于稳定发布版本的维护。
● 设置只有项目经理、模块管理员才有权推送的版本库或者分支,用用于整合测试。