重温痛苦:没有 Git 的世界
介绍
计算机在短时间内取得了长足的发展,并且仍在快速发展。随着科技的进步,世界如今触手可及。随着硬件领域的进步,软件开发也取得了长足的进步。说到软件开发,怎么能不提Git呢?
Git 是目前最常用的版本控制系统(VCS)。Git 速度超快,仿佛速度之神赋予了它超凡的力量。如果您是软件开发人员,Git 就是您的日常工作。Git 于2005 年开发,当时争议很大,而软件开发至今已有 70 多年的历史。那么,在 Git 出现之前,开发世界是什么样的呢?
让我们深入探讨一下。
1)本地维护备份
在软件开发的早期阶段,没有版本控制系统。每日或每周备份是常态。
对于协作项目,过去通常有一个主副本由一个人控制。每个人都与这个人一起工作。
在那个年代,“主副本”Commit指的是备份当前版本并应用新的更改。
这带来了两个主要问题:
1) 很难知道你随着时间的推移做了哪些更改。除了手动检查文件差异之外,别无选择。
2)随着时间的推移,文件会变得非常大,以至于制作多个文件最终可能会占用整个磁盘存储空间。
2)本地VCS(LVCS)
没有 VCS 的所有任务都很繁琐。这需要发布团队和项目负责人付出更多努力。为了解决这个问题,程序员开发了Local VCS。它们也被称为“第一代 VCS”。
顾名思义,它有一个本地数据库来存储对文件所做的更改。最流行的本地版本控制系统之一是“ RCS(版本控制系统) ”,它存储了补丁集,并可以通过合并这些补丁集来重现文件在任何时间点的状态。
另一个流行的第一代本地 VCS 是“ SCCS ”或源代码控制系统,它确实是 UNIX 开发人员于 1972 年开发的第一个 VCS。
3)集中式VCS(CVCS)
本地 VCS 很好,或者至少比维护备份要好,但即使这样也存在问题。所有内容都已存储locally。如果system crashed没有备份,您将丢失所有内容。此外,还有no way to collaborate其他开发人员遇到的问题。
为了解决这个问题,集中式 VCS 应运而生。它们是“第二代 VCS”
在这里,我们有一个中央服务器,其中包含项目的所有版本和提交。每个人都可以推送和拉取更改。由于服务器是集中式的,几乎每个人都知道其他人在做什么。
除了这些优点之外,CVCS 也存在缺点:
1)由于一切都是中心化的,如果server failure服务器硬盘损坏,您将丢失所有内容(如果没有备份)。您可能会从提交了最后更改的开发人员那里获得项目的最新版本,但所有之前的更改都已丢失。
2) 此外,由于服务器集中式设计,您需要先登录an Internet connection才能提交更改。因此,如果您在没有网络的地方工作,可能会遇到一些麻烦。
第二代 VCS 的一些示例是“ Apache Subversion(SVN) ”,“ CVS ”和“ Perforce ”。
4)分布式版本控制系统(DVCS)
早期的一切都各有优缺点。但人们需要更好的解决方案,于是分布式版本控制系统 (VCS) 应运而生。它也被称为“第三代 VCS”。
locally on their machine在这里,每个人都在和 上拥有项目的完整备份centralized server。由于每个人都拥有完整工作历史记录的本地副本,因此无需在线即可提交更改。他们可以先将更改提交到本地存储库,然后只要有互联网可用,就可以将这些更改推送到主存储库(远程存储库)。
第三代 VCS 的一些示例是“Git”,“Mercurial”,“Bitkeeper”和“bzr”。
GIT简史
Linux 的开发始于1991年。直到2002年,变更都以补丁和存档文件的形式传递。考虑到项目规模,这对于开发人员来说非常困难。
因此,他们最终在2002年开始使用当时免费的“Bitkeeper VCS” 。一切都很顺利,Linux 的开发也一直很顺利,直到2005 年, Bitkeeper 的版权持有者Larry McVoyfree-of-charge声称Andrew Tridgell通过逆向工程Bitkeeper 协议创建了Sourcepuller ,从而撤销了Bitkeeper 的版权。
当时Linus Torvalds,Linux 的创建者 开始考虑开发自己的分布式版本控制系统 (VCS),并使其具备所需的功能。Git 的开发始于2005 年 4 月 3 日,并于2005 年 4 月 29 日实现了其性能目标。
这导致了软件开发领域使用最广泛的 VCS 的开发。
致谢
图片:Pro Git
参考
Pro Git 电子书: https://git-scm.com/book/en/v2
维基百科: https://en.wikipedia.org/wiki/Git
后端开发教程 - Java、Spring Boot 实战 - msg200.com



