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第三方登录集成

