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

原文链接:
首先我们必须明白软件开发这件事一定是由一个团队进行开发的 , 所以就存再着成员之间的分工 , 那么就会出现这种情况 , 成员A对项目进行了数据增加逻辑的操作的同时 , 成员B也在对项目进行数据删除逻辑的操作 , 两者执行操作之前的项目蓝本肯定都是一样的 , 但是假设A先完成了操作并且上传服务器 , 之后B也完成了操作并且上传服务器 , 请问这是会出现什么情况呢?显然B上传的文件会将A的文件覆盖 , 那么A编写的逻辑就会失效 , 那么岂不是A做的工作全都凉…这里为了让大家理解的更加清楚 , 会通过下面的图来进行解释 。
Git是什么?我们为啥需要Git?Git又是怎么生出来的?文章插图
在举个非常简单的例子 , 当我们已经新建过一个java文件夹时 , 如果我们再建一个java文件夹 , 显然是会覆盖前一个文件夹的 , 那么之前的文件夹就会丢失 。 所以就需要一款软件来实现项目的版本控制 , 如下图所示:
Git是什么?我们为啥需要Git?Git又是怎么生出来的?文章插图
所以就出现了一系列的版本控制工具 。 这其中主要是分为两类 , 一类是集中式版本控制工具 , 这其中必要著名的就是SVN , CVS , VSS…另一种就是分布式版本控制工具 , 这里面主要的就包括我们现在所说的Git工具 。
这里我们在稍微说一下集中式与分布式版本控制工具的关系 。
我们先用两张图来看看集中式与分布式 。
Git是什么?我们为啥需要Git?Git又是怎么生出来的?文章插图
从这张图我们就能看出来集中式的理念了 , 显然就是所有的主机都将版本信息交由服务器来统一控制 , 体现的了集中的概念 。
Git是什么?我们为啥需要Git?Git又是怎么生出来的?文章插图
从上面的图我们就能发现一点 , 这里的箭头我用的都是双箭头而并不是单箭头了 , 就很能体现出分布式的理念了 , 显然这里双箭头的意思就是每个主机既能充当其他主机的服务器版本控制工具 , 同时自己也是一台主机 , 可以上传自己的版本信息 , 这样就更加的高效共享 。
这里我们在稍微讲解一下Git的发展历程 。 其实想想计算机的历史也是挺好玩的 。
这里要提一位大神就是创造了Linux的linus , 看了一下这个大神的介绍 , 发现他是真的牛逼 , 22岁就写出了Linux , 而且这还不是最牛逼的 , 你特么敢信 , 这货22岁的时候就已经有10多年的软件开发经验了 , 属实牛逼 。 最早11岁的时候就用BASiC语言写了一个关于统计学的小程序 。 11岁啊 , 11岁啊 , 说的不好听点 , 那时候我们还不知道在哪儿玩屎呢 。。。。。
Git是什么?我们为啥需要Git?Git又是怎么生出来的?文章插图
在linus创造出Linux后并且开源出去之后 , 这样便有越来越多的人在这上面进行开发 , 但是有人开发就会有一个问题 , 有这么多开发者 , 就必定需要有人对他们贡献的代码进行管理 , 一开始就全是linus一个人进行手动的合并整理 , 但是毕竟一个人怎么干的过整个世界的开发者呢 , 所以linus自己也就十分的苦恼 。 这时候就又有个人站出来了 , 但其实真正意义上 , 也不能说是人 , 而是一个公司 , 就是BitKeeper的一个子公司BitMover站出来了 , 说是愿意出于人道主义向linus提供帮助 , 愿意免费将自己的版本控制系统给linus来进行使用 , 但是前提是不能对他们的系统进行破解 , 这句话一说大家就都懂了吗 。 就好比我现在让你别去想猫 , 但是你现在脑子里想的一定是猫的概念是一样的 。 虽然这件事并不是linus去做的 。 但是毕竟linux是一个开源的系统 , 并不能对全世界的开发者进行强有力的约束 , 于是就出现了这么一个人Andrew,他呢就想着去破解BitKeeper的协议 , 但是呢 , BitMovier也不是吃干饭的呀 , 没多长时间就发现了 , 这下就该了 , 当初就这么一个条件你们都不遵守 , 滚犊子 , 滚犊子 , 都特娘的别用了 。
Git是什么?我们为啥需要Git?Git又是怎么生出来的?文章插图
最后呢 , 两者都没有妥协 , Linus自己呢也十分崩溃 , 那没办法了呀 , 你不给我用 , 我就自己搞一个呗 。 属实是牛逼 , linus自己用C语言开发了一个分布式的版本控制系统:GIT , 并且主体程序开发只他娘的用了两个星期 。 太特么残暴了 。 一个月后 , Git就基本生出来了 , 并且Linus也已经将linux系统的代码交给Git来进行管理 。 牛--------------------------------逼-----------------------Ohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh