Git------(1)什么是Git(分布式版本控制系统)

Git知识整理–(1)什么是Git


Git
参考了《我们为什么要学习版本控制系统?》

  Git是一款免费、开源的分布式版本控制系统(也有集中式,没有分布式好用),用于敏捷高效地处理任何或小或大的项目。

版本控制系统

  版本控制(Revision control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软体工程技巧,借此能在软体开发的过程中,确保由不同人所编辑的同一程式档案都得到同步。由这个概念中我们得出两个版本控制的关键点,一个是记录,一个是同步。
  免得你本机坏了,代码和文档丢了! 也可以不用每天从服务器上下载,但要每天提交到服务器上, 但要与服务器上的版本同步.
  当我们写出几十行、几百行代码之后,我们突然发现,代码运行不了,甚至我今天所写的代码,我第二天发现,也运行不了。几十行代码几百行代码,在代码中,尤其嫌少。我们经常写几千条代码甚至上万条代码,甚至两三个人共同写同一个东西,等完工的时候我们发现,单个部分是可以运行的,但是完整的程序是运行不了的。我们很多人鱼龙混杂的在做同一件事情,这时候就显得非常麻烦了,如何去统一众人的代码,让程序不出问题顺利跑起来,同时写个程序可能只需要一两个月,而改正和维护维护一个程序需要数倍的时间,这时就需要版本控制系统了。
  生活是具体的,那么记录也应该是具体的。那具体的是什么意思呢?就是它能记录每一句你所打出来的代码,每次提交跟上一次提交之间的变化,这里的版本就是每一次你的提交。今天的提交是一个版本,明天你写了代码之后再次提交它就更新了一个版本。这些版本,是有区别的,它会记录,每一个区别点。举个例子:你打出一句话“我是一个严谨地批判性思考者。”然后提交,突然发现“地”字打错了,应该是“的”;然后你更正了你的句子,然后再次提交,它会提醒你你改变了一个“的”字,然后你还可以备注这次哪里错了。
  版本控制系统的第二个关键点——同步。你和你的小伙伴共同做一个项目。你是白天工作四个小时,然后开始休息,然后由他接着再做四个小时,这个时候你们需要开始沟通交接,她需要了解你今天都做了些什么,对我们的项目做了什么样的改变。然后你们交谈了两个小时,把所有的改变说了一遍。这样,既费时,又费力,效率特别低下,有时候还有可能是语言的理解差距,可能还理解错了,白白从新浪费了很多时间。
  这个时候版本控制系统就起了很大的作用。上面说过版本控制系统可以非常详细具体地记录每一步的改变。那么同步的时候,他就可以把所有的具体的详细的改变,同样同步。你的小伙伴就可以清晰的看到你所做出的改变,然后接着进行愉快的玩耍了。

集中式版本控制系统

  集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

分布式版本控制系统

  分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
  分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
  和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
  在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
  Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理
  各种分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

下一节:Git——(2)什么是GitHub(是个平台)

猜你喜欢

转载自blog.csdn.net/jack_yangying/article/details/78293210
今日推荐