Git入门简介---什么是Git

一.什么是Git?

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。


二.Git的诞生

linus在创建开源的linux系统的时候,并不是他一个人来完成linux的壮大的,而是全世界的热心志愿者一起参与linux的代码编写,其中代码的管理量之大是可想而知的,所以,版本控制系统就成为了必需的东西,可能大家又想了,有CVS和SVN啊,但是,Linus坚定的反对使用CVN和SVN,他嫌弃这些集中式的版本控制系统不但速度慢,而且必须联网才能使用,确实,连我都嫌弃,但可能又有朋友说了,不是也有一些商用的版本控制系统吗,虽然比CVS和SVN好用吧,但是都是要钱的呀,首先不谈linus的开源精神,这花钱的还赔本的买卖可没人愿意做呀。

到了2002年,距离linux的发展已经十年了,Linus的手动管理代码的方式已经很难继续使用了,又累代码又多,以些江湖子弟也对这种有点low的方式产生了不满。于是Linus选择了一个商业的版本控制系统BitKeeper,Bitkeeper的老大呢,出于道义,就授权Linus的社区免费使用Bitkeeper,Linus内心还是很窃喜的,毕竟不花钱对吧,毕竟真香定律全球通用嘛。可是,好景不长,2005年的时候,linux社区的一些江湖人士开始躁了,开发Samba的Andrew视图破解Bitkeeper的协议,当然也不知他一个干了这事儿,你说干就干吧,还被Bitkeeper的老总发现了,这下完求咯嘛,肯定Bitkeeper得收回这个使用权了。Linus心想,得嘞,那我就自己整一个分布式版本控制系统,Linus花了两周时间整出来了,那就是Git!!!不得不佩服呀,需求促进生产力呀。

如果想了解更多关于Git诞生的故事,可以前往git官方网站-git的起源、腾讯云-git的诞生以及简书-讲述git的诞生史。


三.集中式管理vs分布式管理

集中式版本控制系统:例如SVN和CVS。

版本库是集中存放在中央服务器的,这个中央服务器可以是自己的一台电脑,也可以是远程云服务器。在工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始工作。最后,再把自己的活推送给中央服务器,进行版本控制与迭代。
中央服务器就好比是一个网络不发达时代的银行,当我们想使用一大笔钱时,我们就需要先去银行去足够多甚至多于总需求的钱,然后进行我们的消费,最后再把没用完的钱再存回去。

分布式版本控制系统:例如git和Mercurial。

分布式版本系统最大的好处就是没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候不需要联网,无时不刻的可以完成自己的操作。

集中式管理vs分布式管理的比较

/ 集中式版本控制系统 分布式版本控制系统
是否有中央服务器 有。开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器。因此脱离服务器开发者是几乎无法工作的 没有中央服务器,开发人员本地都有 Local Repository(本地仓库)
网络依赖 必须要联网才能工作,而且对网络的依赖性较强,如果推送的文件比较大而且网络状况欠佳,则提交文件的速度会受到很大的限制。甚至无法提交 分布式在没有网络的情况下也可以执行commit、查看版本提交记录、以及分支操作,在有网络的情况下执行 push到 Remote Repository(上传同步到远程仓库) 。
文件存储格式 按照原始文件存储,体积较大 按照元数据(描述数据的数据,对数据及信息资源的描述性信息。)方式存储,体积很小。
是否有版本号
分支操作的影响 创建新的分支则所有的人都会拥有和你一样的分支,会对整个项目造成修改 别人不会拥有和你一样的分支,分支操作不会影响其他开发人员,只有当push到 remote Repository 并通过最高管理员审核才可以并入主分支并且被其他成员访问
关于提交 commit 提交的文件会直接记录到中央版本库 提交是本地操作,需要执行push操作才会到主要版本库

如果想要了解更多关于集中式版本控制系统和分布式版本控制系统,可以前往廖雪峰的官方网站了解更多。

四.Git的作用

当我们编写一篇word文档时,我们时常会因为想不断的保存自己的一些改动而保存无数个新文档,类似如图:

Git入门简介---什么是Git_第1张图片

我们的苦恼

  1. 这样不仅非常麻烦,还会在我们想找到之前某一个改动时因找不到这个改动而一个一个的打开这些文档,这里只有十个文件,万一是上百个上万个文件,那不得找到明年去。真麻烦!
  2. 由于内存占用太多或者文件太多过于凌乱,当我们想只保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删,真郁闷!

我们的想法

于是,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,并随时调用,岂不是很方便?

我们的幻想

他用起来应该是可以这个样子
Git入门简介---什么是Git_第2张图片

这样他就可以帮助我们完成对每个版本改动的细节的描述,以及版本的更新迭代过程的安全性,以及可以对比每次更新迭代之后的不同点,管理起来就更加方便!巧的是,git的好处与作用正是如此,并且更神奇的是它还可以提供分支的管理,它可以帮助我们团队之间更好的合作,在保护主分支的情况下,编写属于自己代码的一部分。

你可能感兴趣的:(git,简介,诞生,分布式版本控制系统,集中式版本控制系统,git)