到目前为止,当今世界上使用最广泛的现代版本控制系统是 Git。Git 是一个成熟的、积极维护的开源项目,最初由 Linux 操作系统内核的著名创建者 Linus Torvalds 于 2005 年开发。有海量软件项目依赖 Git 进行版本控制,包括商业项目和开源项目。使用过 Git 的开发人员在可用的软件开发人才库中占有很好的比例,它在各种操作系统和 IDE(集成开发环境)上都能很好地运行。

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 是同类工具中采用最广泛的工具。这使得 Git 具有吸引力,原因如下。在 Atlassian,我们几乎所有的项目源代码都是在 Git 中管理的。

大量的开发人员已经有了 Git 的经验,并且很大一部分大学毕业生可能只有 Git 的经验。虽然有些组织在从另一个版本控制系统迁移到 Git 时可能需要攀登学习曲线,但许多现有和未来的开发人员不需要接受 Git 培训。

除了庞大人才库的好处外,Git 的优势还意味着许多第三方软件工具和服务已经与 Git 集成,包括 IDE,以及我们自己的工具,例如 DVCS 桌面客户端 Sourcetree、问题和项目跟踪软件 Jira,以及代码托管服务 Bitbucket

如果您是一个没有经验的开发人员,想要在软件开发工具方面积累宝贵的技能,那么在版本控制方面,不妨考虑使用 Git。

Git 是一个高质量的开源项目

Git 是一个非常受欢迎的开源项目,拥有十多年的深厚管理经验。项目维护者表现出了平衡的判断力和成熟的方法来满足用户的长期需求,定期发布可提高可用性和功能性的版本。开源软件的质量很容易受到审查,无数企业在深度依赖这种质量。

Git 拥有强大的社区支持和庞大的用户群。文档很好而且很丰富,包括书籍、教程和专门的网站,还有播客和视频教程。

开源可以降低业余开发人员的成本,因为他们无需支付任何费用即可使用 Git。在开源项目中使用方面,Git 无疑是前几代成功的开源版本控制系统 SVN 和 CVS 的继任者。

对 Git 的批评

对 Git 的一个常见批评是它可能很难学习。Git 中的某些术语对于新手来说是新知识,对于其他系统的用户来说,Git 的术语可能会有所不同,例如,Git 中的 revert 与 SVN 或 CVS 中的含义不同。尽管如此,Git 非常强大,为用户提供了很多功能。学会使用这种力量可能需要一些时间,但是一旦学会,团队就可以利用这种力量来提高他们的开发速度。

对于那些来自非分布式 VCS 的团队来说,拥有中央存储库似乎是一件好事,他们不想丢失。但是,尽管 Git 设计为分布式版本控制系统 (DVCS),使用 Git,您仍然可以拥有一个官方的规范存储库,必须存储对软件的所有变更。使用 Git,因为每个开发人员的存储库都已完成,他们的工作不必受到“中央”服务器的可用性和性能的限制。在中断期间或离线时,开发人员仍然可以查阅完整的项目历史记录。由于 Git 既灵活又是分布式的,所以您可以按照自己习惯的方式工作,但可以获得 Git 的额外好处,其中一些您甚至可能没有意识到自己在这方面的缺失。

现在您已经了解了什么是版本控制、什么是 Git 以及为什么软件团队应该使用它,请继续阅读以了解 Git 可以为整个组织带来的好处。

准备好了解 Git 了吗?

试用本交互式教程。

立即开始