git 诞生日你知道吗?

发布时间 - 2022-04-08 00:00:00    点击率:

2005 年 4 月 6 日:git 项目首次对外公开

git 是一个分布式版本控制软件,最初由 linux 之父林纳斯·托瓦兹创作,于 2005 年 4 月 6 日以 gpl 许可协议发布。最初是为了更好地管理 linux 内核开发而设计。发布后的次日,git 实现了作为自身的版本控制工具,因此一般把 4 月 7 日视为 git 诞生日。git 是目前世界上最受欢迎的开源分布式版本控制系统,初始由林纳斯·托瓦兹开发,后移交给滨野纯。

git 最初的开发动力来自 BitKeeper 和 Monotone;git 最初只是作为一个可以被其他前端(比如 Cogito 或 Stgit)包装的后端而开发的,但后来 git 内核已经成熟到可以独立地用作版本控制。很多被广泛使用的软件项目都使用 git 进行版本控制,其中包括 Linux 内核、X.Org 服务器和 OLPC 内核等项目的开发流程。

图源:维基百科

自 2002 年开始,林纳斯·托瓦兹决定使用 BitKeeper 作为 Linux 内核主要的版本控制系统用以维护代码。因为 BitKeeper 为专有软件,这个决定在社群中长期遭受质疑。在 Linux 社群中,以理查德·斯托曼为代表的自由软件基金会成员,则主张应该使用开放源代码的软件来作为 Linux 内核的版本控制系统。林纳斯·托瓦兹也曾考虑过采用现成软件作为版本控制系统(例如 Monotone),但这些软件都存在一些问题(比如性能不佳)。而现成的其他方案,如 CVS 的架构,则受到林纳斯·托瓦兹的批评。

2005 年,安德鲁·垂鸠(Andrew Tridgell)写了一个简单程序,这个程序可以连接 BitKeeper 的仓库;BitKeeper 著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对 BitKeeper 内部使用的协议进行逆向工程,决定收回无偿使用 BitKeeper 的许可。Linux 内核开发团队与 BitMover 公司进行磋商,但无法解决他们之间的歧见。失去了 BitKeeper,林纳斯·托瓦兹只能决定自行开发版本控制系统替代 BitKeeper,最终他以十天的时间,用 C 语言编写出了 git 的第一个版本。

实际上 Linux 内核开发团队决定开始开发和使用 git 来作为内核开发的版本控制系统的时候,世界上开源社群的反对声音不少,最大的理由是 git 太艰涩难懂;但是随着开发的深入,git 的正常使用都由一些友善的命令来执行,使 git 变得非常好用。作为开源自由原教旨主义项目,git 没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制。原本 git 的使用范围只适用于 Linux/Unix 平台,但在 Windows 平台下的使用也日渐成熟,这主要归功于 Cygwin、msysgit 环境,以及 TortoiseGit 这样易用的 GUI 工具。git 的源代码中也已经加入了对 Cygwin 与 MinGW 编译环境的支持且逐渐完善,为 Windows 用户带来福音。

推荐:《Git使用教程》


# git  # 控制系统  # 纳斯  # 最初  # 开源  # 世界上  # 斯托  # 理查德  # 安德鲁  # 是一个  # 出了 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Python面向对象测试方法_mock解析【教程】  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何在建站宝盒中设置产品搜索功能?  Laravel如何升级到最新版本?(升级指南和步骤)  原生JS实现图片轮播切换效果  如何在搬瓦工VPS快速搭建网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何在VPS电脑上快速搭建网站?  Laravel如何实现API版本控制_Laravel版本化API设计方案  如何生成腾讯云建站专用兑换码?  详解jQuery停止动画——stop()方法的使用  Android滚轮选择时间控件使用详解  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Android利用动画实现背景逐渐变暗  如何快速搭建高效WAP手机网站?  教你用AI将一段旋律扩展成一首完整的曲子  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  制作企业网站建设方案,怎样建设一个公司网站?  LinuxCD持续部署教程_自动发布与回滚机制  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何集成Inertia.js与Vue/React?(安装配置)  如何快速搭建FTP站点实现文件共享?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何正确选择百度移动适配建站域名?  BootStrap整体框架之基础布局组件  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  开心动漫网站制作软件下载,十分开心动画为何停播?  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel如何创建自定义Artisan命令?(代码示例)  高性价比服务器租赁——企业级配置与24小时运维服务  Bootstrap整体框架之JavaScript插件架构  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何快速登录WAP自助建站平台?  Android实现代码画虚线边框背景效果  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成