Git 学习笔记 | Git 的简介与历史
- [Git 学习笔记 | Git 的简介与历史](#Git 学习笔记 | Git 的简介与历史)
-
- [Git 简介](#Git 简介)
- [Git 历史](#Git 历史)
Git 学习笔记 | Git 的简介与历史
Git 简介
Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:本地仓库和远程仓库。
工作流程如下:
- 从远程仓库中克隆或拉取代码到本地仓库(clone/pull)
- 从本地进行代码修改
- 在提交前先将代码提交到暂存区
- 提交到本地仓库。本地仓库中保存修改的各个历史版本
- 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况。
Git 流程图:
Git 是目前世界上最先进的分布式版本控制系统。
Git 历史
同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
很多人都知道,Linus 在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。
Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?
事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!
你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?那个年代不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用 。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。
不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。而授权的前提是:Linux 社区的人不能开发具有相同功能的竞争产品。
另一方面,BitKeeper不是开源的。显然与Linux 的开源精神不相符,所以linux 社区的很多人抱怨,不愿意使用。
Andrew Tridgell (Samba 开发服务的创造者) 非常不满,偷偷违反了和 BitKeeper 的协议,反编译 BitKeeper 的源代码,开发了个爬虫,然后爬取信息被人发现了。BitKeeper 公司的领导非常不满意,然后开始发布消息说,(下个版本)不再为Linux 提供免费的服务。
Linus 本人就出面协调(几周或者几个月),但是不管用,没办法。
Linus 本人花了 10 天的时间发明了 Git,一个月之内,Linux系统的源码已经由Git管理了。
Git 出来以后毕竟是一个人做的,开始并不好用(刚开始只能用勉强可以用来形容),还是很多人抱怨,发展了很多年都没有干过其他软件。
直到 2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,从此 git 迎来了飞速发展,当下git 已经成为了最流行的版本控制工具。