到目前为止,当今世界使用最广泛的现代版控制系统是Git。Git是一个成熟的,积极维护的开源项目,最初由Linus Torvalds于2005年开发,他是Linux操作系统内核的著名创始人。大多数的软件项目,包括商业项目以及开放源码,依靠Git进行版本控制。使用过Git的开发人员被认为软件开发人才,Git支持大多数操作系统和在IDE(集成开发环境)中也运行良好。
Git具有分布式架构,Git是DVCS(即分布式版本控制系统)的代表。在Git中,每个开发人员的代码工作副本都是一个仓库,仓库里包含所有更改的完整历史,而不是像CVS或Subversion(也称为SVN)等一般流行的版本控制系统,这些版本控制系统通常只有一个单一的位置有软件的完整版本历史。
除了分布式之外,Git的设计还保证了高性能,安全性和灵活性。
性能
相比其他的版本控制系统,Git的性能特征非常高。提交新的更改、分支、合并和比较以前的版本都针对性能进行了优化。深入了解了实际源代码文件树的常见属性,它们如何通常随时间进行修改以及访问模式是如何进行的,Git内部实现的算法利用了这些优势。
与某些版本控制软件不同,Git在确定文件树的存储和版本历史记录时应该不会被文件的名称所愚弄,而Git则关注文件内容本身。毕竟,源代码文件经常被重命名,拆分和重构。Git仓库文件使用了增量编码(存储内容差异),压缩和显式存储目录内容和版本元数据对象的组合。
分布式还可显着提升性能。例如,像开发人员Alice一样,更改源代码,为即将发布的2.0版本添加功能,然后使用描述性消息提交这些更改。然后,她还工作了第二个功能,并提交了这些更改。自然地,这些在版本历史中被存储为单独的工作。Alice然后切换到相同软件的1.3版本,以修复仅影响旧版本的错误。这样做的目的是让Alice的团队在版本2.0准备就绪之前发布了一个版本1.3.1的错误修复版本。然后,Alice可以返回到2.0分支,继续处理2.0的新功能,所有这些都可以在没有任何网络访问的情况下发生,因此可以快速可靠进行。她甚至可以在飞机上做。当她准备好将所有提交的更改时,并准备发送到远程存储库时,Alice可以使用一条命令推送他们到远程仓库。
安全
Git设计时优先考虑被托管源代码的完整性。文件的内容以及文件和目录的关联,版本,标签和提交,Git存储库中的所有这些对象,都使用了称为SHA1的加密安全散列算法进行安全保护。这样可以保护代码和变更历史,防止意外和恶意更改,并确保历史记录完全可追溯。
使用Git,您可以确保您具有源代码的真实内容历史。
一些其他版本控制系统没有对后面秘密更改的保护。对于依赖于软件开发的任何组织来说,这可能是一个严重的信息安全漏洞。
灵活性
Git的关键设计目标之一是灵活性。Git在几个方面具有灵活性:支持各种非线性开发工作流,在小型和大型项目中的效率以及与对许多现有版本控制系统和协议的兼容性。
Git被设计为支持分支和标记作为一流的公民(不同于SVN),影响分支和标签的操作(如合并或还原)也被存储为变更历史的一部分。并非所有版本控制系统都具有此级别的跟踪功能。
选择Git作为版本控制系统
Git是当今大多数软件团队的最佳选择。虽然每个团队是不同的,应该有他们自己的判断,下面介绍使用Git版本控制系统优于其它方案的主要原因:
Git非常棒
Git具有大多数团队和个人开发人员所需的功能,性能,安全性和灵活性。前面介绍了Git的这些属性。与大多数其他替代方案并列比较,许多团队发现Git非常有优势。
Git是一个事实上的标准
Git是最广泛采用的同类工具。在Atlassian,我们几乎所有的项目源代码都是在Git中管理的。由于如下原因,使得Git对开发者非常有吸引力。
大量开发人员已经有Git经验,相当一部分大学毕业生可能只有Git的经验。虽然一些组织在从另一个版本控制系统迁移到Git时可能需要比较难的学习曲线,但是许多现有的和未来的开发人员将不需要接受Git的培训。
除了大型人才库的优势外,Git的优势还意味着许多第三方软件工具和服务已经与Git(包括IDE)集成在一起,以及我们自己的工具,如DVCS桌面客户端SourceTree,问题和项目跟踪软件JIRA和代码托管服务Bitbucket。
如果您是一位缺乏经验的开发人员,希望在软件开发工具中建立有价值的技能,那么在使用版本控制时,Git应该在您的掌握技能列表中。
Git是一个优质的开源项目
Git是一个拥有强大支持的开放源码项目,拥有十多年的稳定的管理维护经验。项目维护者已经拥有综合的判断力和成熟的方法来满足其用户的长期需求,并提供可扩展性和功能性的定期发布。无数企业要求开源项目的质量,因此开放源码软件的质量很容易被仔细检查。
Git享有极好的社区支持和庞大的用户群。文档非常丰富,包括书籍,教程和专用网站。还有播客和视频教程。
开源软件可以降低业余兴趣开发者的成本,因为他们可以使用Git而不需要支付费用。对于在开源项目中使用,Git无疑是前几代成功开源版本控制系统SVN和CVS的继承者。
对Git的批评
对Git的一个常见批评可能是它难以学习。Git中的一些术语对于新手和其他系统的用户来说将是新颖的,Git术语可能不同,例如,revert在Git中具有与SVN或CVS不同的含义。然而,Git提供非常强大的能力,能为用户提供了大量的功能。学习使用这种功能可能需要一些时间,但一旦学会,该团队可以利用这种能力来提高其开发速度。
对于那些来自非分布式版本管理系统(VCS)的团队来说,拥有一个中央存储库可能看起来好像是不想丢失的东西。然而,虽然Git被设计为分布式版本控制系统(DVCS),但是您仍然可以采用一个严格规范的正式仓库,在其中存储对软件的所有更改。使用Git,每个开发人员的仓库是完整的,因此它们的工作不需要受到“中央”服务器的可用性和性能的束缚。在停电或离线时,开发人员仍然可以查阅完整的项目历史。由于Git具有灵活性和分布式的特性,您可以按照自己使用其他版本控制系统的习惯的方式去工作,但这不能获得Git的其他优势,其中一些您甚至可能无法意识到你错过了。
现在,您了解什么版本控制是什么,Git是什么以及为什么软件团队应该使用它,请继续阅读来发现Git的优势。