(三)Github起源

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

原文:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137402760310626208b4f695940a49e5348b689d095fc000

时间: 2024-12-27 21:25:51

(三)Github起源的相关文章

【GitHub Desktop】MacOS和Win下配置及简单的使用

一. GitHub介绍 1.GitHub 是为开发者提供 Git 仓库的托管服务.这是一个让开发者与朋友.同事.同学及陌生人共享代码的完美场所. 总结一下,GitHub 最大的特征是"面向人" 2.GitHub 与 Git 的区别在 Git 中,开发者将源代码存入名叫"Git 仓库"的资料库中并加以使用. 而 GitHub 则是在网络上提供 Git 仓库的一项服务.也就是说,GitHub 上公开的软件源代码全都由 Git 进行管理. (图片来源GitHub 是怎样的

代码托管至Github

昨天突然之间觉得作为一个iOS程序员,没有在github上提交过自己的代码真是一大遗憾,不管是自己写的优秀的代码还是刚开始学习,用来学习练手的项目.然后我就很想要学习怎么往github上提交代码,很不开心的是:昨天试了一下,还是不明白怎么提交,今天早上经过学习,已经成功的提交了自己的一个项目啦..??....虽然项目很简单,原谅我是一个新手,第一次提交项目...嘻嘻!!! 这是一款写日记的APP,其中运用了FMDB数据库的简单使用,当时自己也是不懂FMDB得使用,所以才有了写这个项目的想法哟.

Git、GitHub使用操作流程图文攻略教程

详细教程 搜集的网站有:(超级详细) GitHub 教程http://www.ihref.com/read-16514.html git教程 http://www.ihref.com/read-16369.html http://blog.csdn.net/vipzjyno1/article/details/22098621 一. Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具; 保存点 : Git的保存点可以追踪源码中的文件, 并能得到

Mac下搭建git

一.在本地git库中添加用户名及邮箱 git config --global user.name "username" git config --global user.email "[email protected]" 二.生成密钥 ssh-keygen -t rsa -C "username" 三.github网站上添加Title及Key,和本地一致

结对实验——学生管理系统

一.题目简介 1 程序设计说明 1.1 程序实现的大体思路: 将学生信息存放在一个记事本中,让该记事本模拟数据库.通过用户输入的命令,对该记事本内的信息进行操作. 1.2 程序主界面 主页面分为4个,从控制台进行操作(主界面) 用户登陆 用户注册 信息查询 退出系统 1.2.1 主界面功能介绍 提示用户输入功能对应的序号,来执行相应的功能. 根据用户输入的数字,进行相应的操作,如:用户输入1后,进入用户登陆界面.当用户输入不符合要求时,提示用户重新输入. 1.3 用户登陆 1.3.1 用户登陆功

Android酷炫欢迎页播放视频,仿蚂蜂窝自由行和慕课网

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53115253 本文出自[DylanAndroid的博客] Android酷炫欢迎页播放视频,仿蚂蜂窝自由行和慕课网 今天无意间看到了蚂蜂窝自由行的app,启动页很酷炫.我记得以前慕课网有个版本的app欢迎页也是播放视频的.今天就顺手写一个,代码比较简单,高手请略过. 先看效果图: 一.资源准备 三个比较短小的视频:视频下载 二.开始编写代码 1.在项目的res下新建一个raw

BGP13条选路原则

BGP选路原则 最高有weight优先,默认为0(思科特有,选大的) 本地优先级高的优先(只可以在IBGP邻居之间传递) 起源本路由器上的路由(network.aggregate-address) as-path最短的优先 最小的起源代码 (IGP 优先 EGP 优先 incomplete) 最低的med ebgp>ibgp 通过最近BGP邻居的路由 如果配置了maixmum-path[IBGP],就负载均衡 最老的EBGP邻居学到的路由,是路由最老 更低的router-id 始发路由器ID相同

npm 发包

前几天封装了公用的locaStorage组件,当然封装后需要发布npm官网,于是摸索了一番终于搞定了,总结下来希望对大家有所帮助 npm安装的package一般支持下面几大类: 本地包 url远程包 仓库中的包 之前有写过如何链接本地和仓库中的包,想了解的可以点这里,下面进入正题介绍npm发布包包到公共的平台上 一  npm包发布 1.注册包仓库账号 为了维护包,NPM必须要使用仓库账号才允许将包发布到仓库中.注册账号的命令是npm adduser. $ npm adduser Username

Git学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件

远程库 远程库,通俗的讲就是不再本地的git仓库!他的工作方式和我们本地的一样,但是要使用他就需要先建立连接! 远程库有两种,一个是自己搭建的git服务器:另一种就是使用GitHub,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库.友情提示:在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改).所以,不要把敏感信息放进去. 远程仓库的好处: 1.我们可以随时随地的与仓库建立连接,以实时存放我们开发的内容: 2.与他