Git 的介绍 | 青训营笔记

53 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天

尽管过去一度流行过相当多的版本控制工具,但整个行业经过接近 20 年的迭代发展, Git 在现在各大开源项目、各大公司内部,基本是版本管理工具的唯一选择了。

Git 介绍

演化

对版本控制的需求,在计算机行业几十年的发展的时间里从来没有停止过。最原始的版本控制方式就是人工管理各个文件,并对这些文件写上一些附加的信息。不过计算机是简化人工作的学科,设计一个简化版本管理工作的软件的想法自然很容易就产生了。

本地式版本控制

最早的时候人们使用的版本控制工具是本地式的,其中最流行的是 RCS,它的基本原理是本地保存所有变更的补丁集,在今天的语境下可以理解为所有版本的 Diff,通过这些补丁,就可以计算出每个版本的实际文件内容。它的缺点是功能有限,并不是为团队协作而设计的。

集中式版本控制

有了团队协作的需求,集中版本控制就应运而生了。它的代表性工具是 SVN,首次发布在 2000 年,目前是 Apache 基金会的项目。

SVN 提供远程的服务器来保存文件,所有用户的提交都保存在这个服务器中,这也是“集中式”的由来。它在记录版本方面的思路与前面所说的 RCS基本一致,即增量地保存文件更新的 Diff。

SVN 也有相当的局限性。比如其集中式的设计带来的影响是一切提交都需要联网才能完成,同时提供服务的服务器出现故障的话,就会影响到所有用户。另外它对分支的支持并不好,在大规模的项目中就显得很笨拙。因此,分布式的版本控制工具就得到人们的推崇了。

分布式版本控制

分布式版本控制工具的代表就是本文的主角,Git。它的缺点相对于前面两种类型的工具的就显得很小了,将在下文进行详细的介绍。

起源

Git 诞生的故事也具有相当的传奇性。它最初的作者是 Linus Torvalds,也就是著名的 Linux 内核的最初作者,Git 的诞生也和 Linux 有关,它最初就是 Linus 为更好的维护 Linux 而创造出来的。

最早的时候 Linux 使用的版本控制工具是 BitKeeper,对于 Linux 来说它最大的缺点是它并非开源软件,这一点使它不太受开源社区的欢迎。让 Linus 放弃 BitKeeper 的导火索是社区有人写了一个程序能连接 BitKeeper 的仓库,这让 BitKeeper 的开发公司认为他们对它进行了逆向工程,于是收回了 BitKeeper 的使用权。最终 Linus 决定自己开发。

经过 Linus 两周的开发,Git 的初版就完成了。

特点

Git 是分布式的,每个开发者本地都有一个基本完整的仓库副本,通过中心服务器进行同步。同时 Git 保存的并不是版本之间的差异,它保存每个提交中所有的内容,通过计算来生成 Diff。