Git是什么?我们为啥需要Git?Git又是怎么生出来的?

简介: Git是什么?我们为啥需要Git?Git又是怎么生出来的?

首先我们必须明白软件开发这件事一定是由一个团队进行开发的,所以就存在着成员之间的分工,那么就会出现这种情况,成员A对项目进行了数据增加逻辑的操作的同时,成员B也在对项目进行数据删除逻辑的操作,两者执行操作之前的项目蓝本肯定都是一样的,但是假设A先完成了操作并且上传服务器,之后B也完成了操作并且上传服务器,请问这是会出现什么情况呢?显然B上传的文件会将A的文件覆盖,那么A编写的逻辑就会失效,那么岂不是A做的工作全都凉…这里为了让大家理解的更加清楚,会通过下面的图来进行解释。


20200704151648454.png

在举个非常简单的例子,当我们已经新建过一个java文件夹时,如果我们再建一个java文件夹,显然是会覆盖前一个文件夹的,那么之前的文件夹就会丢失。所以就需要一款软件来实现项目的版本控制,如下图所示:


2020070415222795.gif


所以就出现了一系列的版本控制工具。这其中主要是分为两类,一类是集中式版本控制工具,这其中必要著名的就是SVN,CVS,VSS…另一种就是分布式版本控制工具,这里面主要的就包括我们现在所说的Git工具。


这里我们在稍微说一下集中式与分布式版本控制工具的关系。


我们先用两张图来看看集中式与分布式。


20200704151703421.png


从这张图我们就能看出来集中式的理念了,显然就是所有的主机都将版本信息交由服务器来统一控制,体现的了集中的概念。


20200704151713382.png


从上面的图我们就能发现一点,这里的箭头我用的都是双箭头而并不是单箭头了,就很能体现出分布式的理念了,显然这里双箭头的意思就是每个主机既能充当其他主机的服务器版本控制工具,同时自己也是一台主机,可以上传自己的版本信息,这样就更加的高效共享。


这里我们在稍微讲解一下Git的发展历程。其实想想计算机的历史也是挺好玩的。


这里要提一位大神就是创造了Linux的linus,看了一下这个大神的介绍,发现他是真的牛,22岁就写出了Linux,而且这还不是最牛的,你特么敢信,这货22岁的时候就已经有10多年的软件开发经验了,属实牛。最早11岁的时候就用BASiC语言写了一个关于统计学的小程序。11岁啊,11岁啊,说的不好听点,那时候我们还不知道在哪儿玩呢。


在linus创造出Linux后并且开源出去之后,这样便有越来越多的人在这上面进行开发,但是有人开发就会有一个问题,有这么多开发者,就必定需要有人对他们贡献的代码进行管理,一开始就全是linus一个人进行手动的合并整理,但是毕竟一个人怎么干的过整个世界的开发者呢,所以linus自己也就十分的苦恼。

这时候就又有个人站出来了,但其实真正意义上,也不能说是人,而是一个公司,就是BitKeeper的一个子公司BitMover站出来了,说是愿意出于人道主义向linus提供帮助,愿意免费将自己的版本控制系统给linus来进行使用,但是前提是不能对他们的系统进行破解,这句话一说大家就都懂了吗。就好比我现在让你别去想猫,但是你现在脑子里想的一定是猫的概念是一样的。虽然这件事并不是linus去做的。但是毕竟linux是一个开源的系统,并不能对全世界的开发者进行强有力的约束,于是就出现了这么一个人Andrew,他呢就想着去破解BitKeeper的协议,但是呢,BitMovier也不是吃干饭的呀,没多长时间就发现了,这下就该了,当初就这么一个条件你们都不遵守,别用了。


最后呢,两者都没有妥协,Linus自己呢也十分崩溃,那没办法了呀,你不给我用,我就自己搞一个呗。属实是牛,linus自己用C语言开发了一个分布式的版本控制系统:GIT,并且主体程序开发只用了两个星期。太残暴了。一个月后,Git就基本生出来了,并且Linus也已经将linux系统的代码交给Git来进行管理。Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh


到2008年的时候GitHub也正是上线。


相关文章
|
Unix Linux 开发工具
|
开发工具 git 开发者
|
开发工具 git 开发者
Git详解之三:Git分支
原文链接:http://blog.jobbole.com/25877/ 原文:《Pro Git》 Git 分支 几乎每一种版本控制系统都以某种形式支持分支。
1199 0
|
Java Go API
Git2.29让Git成功“牵 手”Gerrit
Git 2.29.0 于 2020年10月发布,其中包含了两个阿里巴巴贡献的新特性。阿里巴巴贡献的新特性让 Git 牵手 Gerrit,让 GitHub 模式的代码平台可以像 Gerrit 一样工作。
10915 0
Git2.29让Git成功“牵 手”Gerrit
|
Web App开发 开发工具 git
|
Java 开发工具 git
《Git篇》01.Git看这一篇就够了(三)
《Git篇》01.Git看这一篇就够了(三)
190 0
《Git篇》01.Git看这一篇就够了(三)
|
XML 存储 Java
《Git篇》01.Git看这一篇就够了(一)
《Git篇》01.Git看这一篇就够了(一)
128 0
《Git篇》01.Git看这一篇就够了(一)
|
存储 Shell 开发工具
《Git篇》01.Git看这一篇就够了(二)
《Git篇》01.Git看这一篇就够了(二)
133 0
《Git篇》01.Git看这一篇就够了(二)
|
Shell 网络安全 Apache
Git详解之四:服务器上的Git
原文链接:http://blog.jobbole.com/25944/ 原文:《Pro Git》 服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作。
1740 0
|
缓存 开发工具 git
《走进git时代系列三》详解部分git思想及SVN/GIT命令对比解析
本文首先又一次强调了Git和SVN 版本管理系统思想上的差别, 举例说明了文件存储方式,Git分支到底是什么。 后半部分按照日常工作的场景,将使用SVN/GIT需要用到的命令进行了列举和对比。
9393 0

热门文章

最新文章

相关实验场景

更多