当前位置: 首页 > news >正文

【Git】git 从入门到实战系列(一)—— Git 的诞生,Linus 如何在 14 天内编写出 Git?

<> 博客简介:Linux、rtos系统,arm、stm32等芯片,嵌入式高级工程师、面试官、架构师,日常技术干货、个人总结、职场经验分享

<> 公众号:嵌入式技术部落

<> 系列专栏:C/C++、Linux、rtos、嵌入式开发、流媒体、数据结构、网络协议、开源库、CMake、Makefile、架构设计模式等

本系列系统性总结和梳理git相关内容。对开发者而言,了解 git 产生的背景和设计理念,有助于更好地理解和使用 git;对管理者而言,则能更好地对企业项目开展有效的管理。
在这里插入图片描述
1969 年,Linus Torvalds 生于芬兰赫尔辛基市。父亲 Nils Torvalds 毕业于赫尔辛基大学,是一名活跃的共产主义者及电台记者。母亲 Anna Torvalds 同样毕业于赫尔辛基大学,也是一名记者。有趣的是,他的祖父奥 Ole Torvalds 也是一名记者。除此之外,Torvalds 的外祖父 Leo Tornqvist 是芬兰第一批统计学教授。优秀的家庭背景为 Torvalds 奠定了接受良好教育的基础。Torvalds 在 11 岁时,应其外祖父要求用 BASIC 语言编写一些统计学方面的小程序。大众普遍认为,这是他编程经历之始。

1988年,Torvalds 进入赫尔辛基大学计算机科学系就读。在兴趣的趋势下,Torvalds 创造并发布了自制的操作系统,并将其命名为 Linux。1996 年硕士毕业并移居美国,后拥有美国国籍。2003 年,为专心维护 Linux 从全职公司辞职。
在这里插入图片描述
在2002年以前,Linux内核的版本控制一直是Linus自己。具体流程如下:开发人员将tarballs和补丁提交给几个Linus信任的助手。助手们通过审核后,将补丁发送给Linus。最后,Linus亲手将它们合并到自己的源代码树中,然后发布。

当然,Linus本人并不是一个“完美的版本控制服务”。1998年,知名程序员Larry McVoy通过Linux内核邮件列表首次提出了BitKeeper的想法,他写道:“很明显,我们的领袖[Linus]目前有点超负荷,补丁可能会丢失。”

尽管如今看来,这种手动的工作流程也未免太原始了,但在当时,Linus认为这种工作流程比其他选择(主要是CVS)更好。

Linus认为CVS的核心问题在于其集中化的性质。由于Linux开发人员有数百名之多,所以Linus认为每个人都拥有自己独立的代码库副本至关重要,因为只有这样他们才能在自己的分支上开发。这不仅对线下的工作有帮助,而且对内部管理也很有帮助。每位开发人员都可以自由地向自己的代码库提交任何代码,而且他们有机会说服社区他们的变更是有价值的。这样可以防止拥有提交权限的贡献者成为唯一的代码库的守门人。

最终Linus选择了商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。后来,Linus对BitKeeper表示了极大的赞赏,认为BitKeeper改变了他的看法,而Git的灵感也来源于此。

安定团结的大好局面在2005年被打破了,原因是Linux内核开发人员Andrew Tridgell违反了许可,并实施了逆向工程。他能够提取BitKeeper代码而不需要遵循BitKeeper许可(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。
在这里插入图片描述
Linus充当了三个月的调停,但最终未能达成和解。合作未能成功,这对Linux内核的开发产生了重大影响。因为必须找到一套工具来代替BitKeeper的功能。2005年4月6日Linus通过邮件列表公布了双方合作失败的消息,但实际上他已经展开了紧张的工作。就在2.6.12-rc2发布的三天前,他停止了Linux内核的工作,并全力寻找BitKeeper的替代方案。

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!即2005年4月17日,他发了一封邮件:“第一次真正的内核Git合并!”牛B是怎么定义的呢?大家可以体会一下。

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

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。
在这里插入图片描述
Linus目前受聘于开放源代码开发实验室(OSDL,Open Source Development Labs),全身心的开发Linux内核。尽管这人看上去毫不起眼,比如Linus曾在他的自传《乐者为王》(Just for Fun)中自嘲:“我是一个长相丑陋的孩子,凡是见过我小时候照片的人,都会觉得我的相貌酷似河狸。再想象一下我不修边幅的衣着,以及一个托瓦兹家族祖祖辈辈遗传下来的大鼻子,这样,在你脑海中我的模样就形成了。”但这丝毫也影响不了林纳斯对整个商业社会的巨大价值—Linux代表着网络时代新形式的开放知识产权形态,这将从根基上颠覆以Windows为代表的封闭式软件产权的传统商业模式。更重要的是,这样的颠覆早已悄悄的出现在了商业社会的各个角落。

http://www.lryc.cn/news/412094.html

相关文章:

  • com.microsoft.sqlserve r:sqljdbc4:jar:4.0 was not found in......如何解决?
  • 数据集——鸢尾花介绍和使用
  • ElasticSearch第4篇(亿级中文数据量 ElasticSearch与Sphinx建索引速度、查询速度、并发性能、实测对比)
  • 过期知识:thinkphp5 使用migrate给现有的数据表新增表字段
  • 前端和Postman调用同一个接口,拿到的数据不一样
  • 1000W长连接,如何建立和维护?千万用户IM 架构设计
  • vulhub:Apache解析漏洞CVE-2017-15715
  • 开发中可能会面临的真实问题及处理流程
  • 个性化你的生产力工具:待办事项App定制指南
  • 本地部署持续集成工具Jenkins并配置公网地址实现远程自动化构建
  • 【数据结构】了解哈希表,解决哈希冲突,用Java模拟实现哈希桶
  • qt5 ui转python或C++文件
  • scp命令详解
  • 算法小白的进阶之路(力扣1~5)
  • 昇思25天学习打卡营第22天|MindSporeK基于Diffusion扩散模型学习- Diffusion与其他生成模型
  • 【C++版本】protobuf与gRPC
  • 要抓住国际白银现货行情 以下这几点需要注意
  • 【计算机毕业设计】​720图书馆智能选座系统
  • java面向对象重点总结
  • 1321:【例6.3】删数问题(Noip1994)
  • 使用 Python 中的 ELSER 进行Serverless 语义搜索:探索夏季奥运会历史
  • [HITCON 2017]SSRFme 1
  • 看不见的硝烟:中国网络安全三十年沉浮史
  • 3.7.物体检测算法
  • Spring源码解析(27)之AOP的核心对象创建过程2
  • 【题解】【数学】—— [CSP-J 2023] 小苹果
  • python实现微信聊天图片DAT文件还原
  • 栈与队列——1.有效的括号
  • C语言家教记录(二)
  • Cocos Creator2D游戏开发(10)-飞机大战(8)-计分和结束