Git的前世今生

239 阅读4分钟

1 Git的前世今生

1.1Git的应用

协同工作:业界绝大多数公司都是基于Git进行代码管理,因此Git是一个程序员的必备技能。

开源社区:目前绝大多数的开源项目都是基于Git维护的,参与这些项目的开发都需要用到Git。

1.2版本控制

1.2.1Git是什么

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

1.2.2版本控制是什么

一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统

1.2.3版本控制的作用

更好的关注变更,了解到每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生

也能够随时切换到不同的版本,回滚误删误改的问题代码

1.2.4版本控制的分类

版本控制类型代表性工具解决的问题
本地版本控制RCS本地代码的版本控制
集中式版本控制SVN提供一个远端服务器来维护代码版本,本地不保存代码版本,解决多人协作问题
分布式版本控制Git每个仓库都能记录版本历史,解决只有一个服务器保存版本的问题
1.2.4.1本地版本控制
最初的方式

通过本地复制文件夹,来完成版本控制,一般可以通过不同的文件名来区分版本

解决方案

开发了一些本地的版本控制软件,其中最流行的是RCS

基本原理

本地保存所有变更的补丁集,可以理解成就是所有的Diff,通过这些补丁,我们可以计算出每个版本的实际的文件内容

缺点

只能在本地使用,无法进行团队协作,使用的场景有限,因此衍生出了集中式版本控制

1.2.4.2集中版本控制
代表性工具

SVN

基本原理

1.提供一个远端服务器来保存文件,所有用户的提交都提交到该服务器中

2.增量保存每次提交的Diff,如果提交的增量中和远端现存的文件存在冲突,则需要本地提前解决冲突

优缺点
优点1.学习简单,更容易操作2.支持二进制文件,对大文件支持更友好
缺点1.本地不支持版本管理的概念,所有提交都只能联上服务器后才可以提交2.分支上的支持不够好,对于大型项目团队合作比较困难3.用户本地不保存所有版本的代码,如果服务端故障容易导致历史版本的丢失
1.2.4.3分布式版本控制
代表性工具

Git

基本原理

1.每个库都存有完整的提交历史,可以直接在本地进行代码提交

2.每次提交记录的都是完整的文件快照,而不是记录增量

3.通过Push等操作来完成远端代码的同步

优缺点
优点1.分布式开发,每个库都是完整的提交历史,支持本地提交,强调个体2.分支管理功能强大,方便团队合作,多人协同开发3.校验和机制保证完整性,一般只添加数据,很少执行删除操作,不容易代码丢失
缺点1.相对SVN更复杂,学习成本更高2.对于大文件的支持不是特别好(git-lfs工具可以弥补这个功能)

1.3Git的发展历史

作者

Linus Torvalds(不仅是Linux这个项目的作者,也是Git的作者)

开发原因

怀疑Linux团队对BitKeeper(另一种分布式版本控制系统,专有软件)进行了逆向工程,BitKeeper不允许Linux团队继续无偿使用。因此决定自己开发一个分布式版本控制系统

开发时间

大概花费两周时间,完成了Git的代码第一个版本,后续Linux项目就开始使用Git进行维护

发展平台描述
GitHub全球最大的代码托管平台,大部分的开源项目都放在这个平台上
Gitlab全球最大的开源代码托管平台,项目的所有代码都是开源的,便于在自己的服务器上完成Gitlab的搭建
Gerrit由Google开发的一个代码托管平台,Android这个开源项目就托管在Gerrit之上