一、Git的本质——版本控制器:
1.1版本控制器的概念:
- 版本控制器(Version Control System, VCS)是一种软件工具,用于记录文件的变化,以便将来可以查阅特定版本、回滚到之前的版本、比较不同版本之间的差异以及协同工作。版本控制系统在软件开发中尤为重要,因为它们帮助开发团队管理代码的演变,并在多个开发者之间协调工作。
1.2版本控制器的主要功能:
- 版本追踪:记录每次对文件的修改,并保存不同版本的快照。
- 分支管理:允许开发者创建、合并和删除分支,以便并行开发不同的功能或修复不同的问题。
- 合并变更:整合来自不同开发者或不同分支的修改,解决冲突并生成一个统一的版本。
- 回滚:恢复到之前的某个版本,以便在出现错误或问题时快速恢复工作状态。
- 日志记录:记录每次提交的详细信息,包括修改者、修改时间和修改内容,以便进行审计和追踪。
- 协同工作:支持多个开发者同时在同一个项目上工作,管理冲突并合并代码。
1.3常见的版本控制器:
- Git:当前最流行的分布式版本控制系统,由Linus Torvalds创建,用于管理Linux内核的开发。Git因其速度、灵活性和强大的分支管理功能而受到广泛欢迎。
- Subversion (SVN):集中式版本控制系统,曾经是很多项目的首选,尤其是那些需要精细访问控制的项目。
- Mercurial:一个分布式版本控制系统,以其简洁和易用性而著称。
二、Linux之父与Git的故事:
- Linux之父叫做“Linus Torvalds”,我们简称为雷纳斯。
- Linux是开源项目,所以在Linux的早期开发中,许多世界各地的能力各异的程序员都参与到Linux的项目开发中。那时,雷纳斯每天都会收到许许多多邮件,里面是每个程序员自己的代码,雷纳斯要审核其中的代码并且不断添加到Linux的源码中。
- 这种工作使得雷纳斯不断压缩自己的私人时间,终于他受不了了。于是他想要有一款分布式版本控制系统,可以让开发者在本地创建分支和进行合并操作,无需每次都与中央服务器通信。也能够让开发者可以独立工作并在本地仓库中进行提交,然后再与其他开发者同步更改
- 于是他就找到了BitKeeper,但是BitKeeper是商业软件,需要付费使用。违背了雷纳斯对开源原则的信仰,并且使用收费的版本控制软件可能会排斥一些开发者,限制了他们参与项目的能力。于是雷纳斯和其团队决定放弃使用BitKeeper。
- BitKeeper的老板听闻后,决定免费向Linux社区提供BitKeeper的使用权限。后来由于社区内部的一些矛盾和冲突(Linux内核开发社区中的一些成员对于依赖BitKeeper这样一个闭源的商业软件一直存在不满。他们担心使用一个闭源工具来开发开源软件会带来潜在的问题,比如数据锁定和对商业公司的依赖。于是Andrew Tridgell,知名的开源开发者(Samba项目的主要开发者之一),尝试逆向工程BitKeeper的协议以便创建一个开源的替代工具。这一举动被BitMover公司视为威胁,认为这可能违反了他们的使用协议。),最终导致BitMover公司决定收回Linux社区的免费使用权限。
- BitMover公司撤回Linux社区免费使用BitKeeper的权限,对Linux内核的开发产生了重大影响,因为开发者们突然失去了他们依赖的版本控制工具。面对这一情况,雷纳斯迅速采取行动。决定自己开发一个新的版本控制系统。并在短短的几个星期内就完成了基本功能。且进行了开源,于是乎Git就诞生了。
- 由于Git是开源软件,内核开发者迅速采用了它,并对其进行了改进和扩展。
- Git不仅解决了Linux内核开发的版本控制问题,还迅速成为全球最流行的版本控制系统。现在被广泛应用于各种开源和商业项目,许多开发团队使用它来管理代码库。