用只狼教你学Git (上)

Git 又叫做分布式版本控制系统 我用《只狼》这个游戏的例子来通俗的解释它。在代码的管理上,团队的协作上都发挥着重要的作用 。一个小时时间你就能使用它

整体介绍

Git 又叫做分布式版本控制系统

我用《只狼》这个游戏的例子来通俗的解释它

在代码的管理上,团队的协作上都发挥着重要的作用

一个小时时间你就能使用它

什么是GIT

定义:Git 是一个分布式版本控制系统

当你问起会使用Git的人,那他们可能回答的就是如上定义,还是一头雾水?

那到底什么是「分布式」 什么又是「版本」,什么又是「控制」呢?

版本控制是什么?

我通俗的来解释一下,什么是「版本控制」:

大家打过一些存档的游戏吧,《只狼》这个角色扮演游戏以它超高的难度著称(我最后是开着挂把苇名一心干掉的,太羞耻了):

一开始一无所有,然后接任务,闯关,升级,刷装备从一无所有到所向披靡,但是常常会有这样一个操作,就是完成某个章节之后,到一个地方给你回血存档,为什么要这么做呢?

原因大家都明白,如果我技术高超一下打到了最后一关,结果一个BOSS把我干掉了,我难道又回到第一关的时候吗?只狼如果这么做,那这个游戏可能没法玩了。

存档就相当于给某个时间点加了一个标签,我在游戏中死了,我可以回到最近的标签

「版本控制」也是这个道理,在你管理你的代码,升级你的代码的时候,难免会有一些错误,如果说你没有意识到错误的存在,一直往后写,最后程序出错,发现错误的代码在一个核心的地方,只有从头开始改,那是很痛苦的,所以一般在正确的时候做一个节点标记,如果出错我可以回到那个节点,至少前面的代码都是正确的

这就是「版本控制

什么又是分布式呢?

如果用游戏的角度来讲,大概就是单机游戏和联网的游戏的区别。

在Git之前有很多版本管理的系统,但是他们都是集中式的,比如SVN,他们需要一个专门的服务器,来做代码管理,如果没有网络的情况下,就无法进行代码管理

Git就不需要这个要求,无论有没有网络,只要安装了Git,都能够进行代码管理


为什么要学习它

其实通过上面的讲解,应该多多少少知道为什么要做「版本控制」?以及「分布式」

实际上Git他的优势有很多,在「版本控制」这一点来说,它能够记录每个版本之间的差异,什么时候修改了,什么时候删除了,你可以在任何版本之间切换,总结一下

Git的优点有如下:

  1. 免费·开源:说到这点,需要提到一个人,Linus,Linux内核的作者:Git也是由他一手用C语言写的,仅用了10天时间,2005年问世,当时是为了对版本控制Linux内核的代码,在Git之前使用的是一个叫做BitKeeper这个商用版本控制系统,因为当时主张的开源,BitKeeper受到质疑,2005年,Linux内核团队和BitKeeper团队发生矛盾(社区有极客逆向破解了BitKeeper),BitKeeper收回使用权。Linux决定自己开发一个版本控制系统,10天之后,Git问世,成为业界主流,当然BitKeeper也凉凉了,Git不仅免费,而且代码也是开源的。
  2. 速度快,档案体积小:
    • 由于Git是C语言开发,C语言本身速度就相当快
    • 档案体积小:假如每个版本都保存一个文件,那可能很占用硬盘空间,而且文件杂乱无章,难以管理但Git采用的是一个叫快照的方法,Git能够快速切换版本,且快照体积小
  3. 分布式版本管理系统:随时随地,对代码进行版本管理,同时也可以在服务器上管理
    • 在没有网络的时候,在本地管理
    • 在有网络的时候,在服务器上管理GitHub,2008年上线,这个全球最大的程序员社区,就是基于Git这个工具的版本控制网站,你可以在有网络的时候,把代码上传到GitHub上面进行储存

根据这一篇文章,你应该理解什么是Git了,那么下一篇就是硬核的命令,我们来看看,具体用这些命令,怎么实现,「版本控制」,『分布式』。

希望你有所收获~

Default image
LIU
代码是躯体,思想是灵魂

3 Comments

  1. You are so cool! I don’t thinjk I’ve read through a sibgle thing like
    that before. So wonderful to discover someone with a few genuine thoughts on this subject.
    Seriously.. thank you foor starting this up. This site
    is one thing that’s needed on the web, someone with a bit of originality!

Leave a Reply