到目前为止,当今世界上使用最广泛的现代版本控制系统是 Git。Git 是一个成熟的、积极维护的开源项目,最初由 Linux 操作系统内核的著名创建者 Linus Torvalds 于 2005 年开发。数量惊人的软件项目依赖 Git 进行版本控制,包括商业项目和开源项目。使用过 Git 的开发人员在可用的软件开发人才库中有很好的代表性,并且它在广泛的操作系统和 IDE(集成开发环境)上运行良好。
Git 具有分布式架构,是 DVCS(因此是分布式版本控制系统)的一个示例。在 Git 中,每个开发人员的代码工作副本也是存储库可以包含所有更改的完整历史记录。
除了分布式之外,Git 的设计还考虑了性能、安全性和灵活性。
表现
与许多替代方案相比,Git 的原始性能特征非常强大。提交新的更改、分支、合并和比较过去的版本都针对性能进行了优化。Git 内部实现的算法利用了关于真实源代码文件树的共同属性、它们通常如何随着时间而修改以及访问模式是什么的深入知识。
与某些版本控制软件不同,Git 在确定文件树的存储和版本历史应该是什么时不会被文件名所迷惑,相反,Git 专注于文件内容本身。毕竟,源代码文件经常被重命名、拆分和重新排列。Git 存储库文件的对象格式使用增量编码(存储内容差异)、压缩和显式存储目录内容和版本元数据对象的组合。
分布式也可以带来显着的性能优势。
例如,假设开发人员 Alice 对源代码进行了更改,为即将发布的 2.0 版本添加了一项功能,然后使用描述性消息提交这些更改。然后她处理第二个功能并提交这些更改。自然,这些在版本历史记录中存储为单独的工作。Alice 然后切换到同一软件的 1.3 版分支,以修复仅影响旧版本的错误。这样做的目的是让 Alice 的团队能够在 2.0 版准备好之前发布错误修复版本 1.3.1 版。然后 Alice 可以返回 2.0 分支继续开发 2.0 的新功能,所有这一切都可以在没有任何网络访问的情况下发生,因此快速且可靠。她甚至可以在飞机上做到这一点。当她准备好将所有单独提交的更改发送到远程存储库时,
安全
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 术语可能会有所不同,例如,revertGit 中的含义与 SVN 或 CVS 中的含义不同。尽管如此,Git 非常有能力,并为它的用户提供了很多功能。学习使用这种能力可能需要一些时间,但是一旦学会了,团队就可以使用这种能力来提高他们的开发速度。
对于那些来自非分布式 VCS 的团队来说,拥有一个中央存储库似乎是一件他们不想失去的好事。然而,虽然 Git 被设计为分布式版本控制系统 (DVCS),但使用 Git,您仍然可以拥有一个官方、规范的存储库,必须存储对软件的所有更改。使用 Git,因为每个开发人员的存储库都是完整的,他们的工作不需要受到“中央”服务器的可用性和性能的限制。在中断或离线期间,开发人员仍然可以查阅完整的项目历史记录。因为 Git 是灵活的并且是分布式的,所以您可以按照自己习惯的方式工作,但可以获得 Git 的额外好处,其中一些您甚至可能没有意识到自己错过了。
既然您了解了版本控制是什么、Git 是什么以及软件团队应该使用它的原因,请继续阅读以发现 Git 可以为整个组织提供的好处。