GitHub[编辑]

维基百科,自由的百科全书
GitHub
公司类型子公司
网站类型
Git版本库托管
语言英文
成立2008年2月,​16年前​(2008-02
总部
业务范围全球
持有者微软
创立者
首席执行官Thomas Dohmke
代表人物
  • Erica Brescia (COO)
  • Carrie Olesen (CHRO)
  • Mike Taylor (CFO)
产业软件
代码库
社群
员工1,079[1]
母公司微软
网址github.com
商业性质
注册可选(建立和参与项目时需要)
用户1亿(2023年1月)
现状在线
编程语言Ruby

GitHub是一个在线软件源代码托管服务平台,使用Git作为版本控制软件,由开发者克里斯·汪斯崔斯英语Chris WanstrathP·J·海特英语P. J. Hyett汤姆·普雷斯顿·沃纳使用Ruby on Rails编写而成。在2018年,GitHub被微软公司收购。[2][3][4]

GitHub同时提供付费账户和免费账户。这两种账户都可以建立公开或私有的代码仓库,但付费用户拥有更多功能。根据在2009年的Git用户调查,GitHub是最流行的Git访问站点[5]。除了允许个人和组织建立和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,即一般人口中的社群功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。GitHub也提供了图表功能,用于概观显示开发者们怎样在代码库上工作以及软件的开发活跃程度。

截至2022年6月,GitHub已经有超过5700万注册用户[6]和1.9亿代码库(包括至少2800万开源代码库)[7],事实上已经成为了世界上最大的代码托管网站和开源社区[8]。截至2023年1月26日,已经有超过1亿开发人员使用GitHub。[9]

服务[编辑]

GitHub[编辑]

GitHub平台于2007年10月1日开始开发[10][11]。网站于2008年2月以beta版本开始上线,4月份正式上线。[12] GitHub里面的项目可以通过标准的Git命令进行访问和操作。同时,所有的Git命令都可以用到GitHub项目上面。GitHub开发了针对Microsoft WindowsmacOS操作系统的桌面客户端。此外,也可以使用第三方插件来实现Git功能。

网站提供了一系列社交网络具有的功能,例如标星/赞(star)、关注(follow)、评论。用户可以通过复刻(fork)他人项目的形式参与开发,并可通过协作示意图英语Collaboration graph来查看有多少开发者参与了开发并追踪最新的复刻版本。此外网站还有Wiki(通过一个名为 gollum 的软件实现)等功能。

GitHub同时允许注册用户和非注册用户在网页中浏览项目,也可以以ZIP格式打包下载。但是用户必须注册登录一个账号才能讨论、创建并编辑项目、参与他人的项目和代码审查

GitHub支持建立不限数量的公开仓库,已付费用户可以建立私有仓库。2019年1月7日,GitHub宣布免费用户也可以建立私有仓库,私有仓库数量不限但每个仓库最多指定三个合作者[13]。2020年4月14日,GitHub宣布进一步开放核心功能,取消私有仓库合作者数量限制,并降低了收费账号费用[14]

GitHub, Inc. 原本是扁平化的组织框架,没有中端主管,而依赖于员工的自我管理能力。员工可以自由选择有兴趣的项目开发(自由分派),但是薪水由首席执行官订定。

在2014年,GitHub新增了一层中端主管来应对关于高阶主管的严重骚扰指控。针对此事件,首席执行官 Tom Preston-Werner辞职。

开发语言[编辑]

GitHub系统由GitHub公司的开发者Chris Wanstrath开发。系统采用了Ruby on RailsErlang作为后端。[15]

主要功能[编辑]

GitHub通常用于软件开发。GitHub还支持以下格式和功能:

  • 文档:包括自动生成的、采用类Markdown语言的Readme文件(称作GitHub Flavored Markdown, GFM)。
  • 问题追踪系统(同时可用于功能需求)
  • Wiki
  • GitHub Pages支持用户通过软件仓库建立静态网站或静态博客(通过一个名为Jekyll的软件实现,但是也支持采用诸如 Hexo 等其他博客引擎搭建)。
  • 任务列表
  • 甘特图
  • 可视化的地理位置分析
  • 预览3D渲染文件[16]。预览功能通过WebGLThree.js实现。
  • 预览Adobe Photoshop的PSD文件,甚至可以比较同一文件的不同版本。

仓库许可证[编辑]

GitHub的许可条款并不要求公有仓库满足自由软件标准。在建立软件仓库时,GitHub会询问用户准备采取的软件许可证,此外用户也可以使用自己的许可证。

GitHub Enterprise[编辑]

GitHub Enterprise和GitHub的服务类似,不过它为大型企业的开发团队量身定制,并可提供自托管版本服务器软件。[17]

GitHub Pages[编辑]

GitHub Pages是GitHub提供的一个网页托管服务,可以用于存放静态网页,包括博客、项目文档甚至整本书[18]。一般GitHub Pages的网站使用github.io的子域名,但是用户也可以使用第三方域名。Github Pages以开源仓库公开静态网页源代码,可在仓库->设置->Code and automation里设置, https://github.com/页面存档备份,存于互联网档案馆)<用户名>/<仓库名>/settings/pages。

Gist[编辑]

GitHub提供一个粘贴箱英语Pastebin风格的站点GitHub Gist。

Tom Preston-Werner于2008年开发了Gist功能[19]。Gist继承了粘贴箱英语Pastebin的观念,此外还添加了版本控制、复刻、SSL加密等功能。因为代码片段也是Git仓库,所以单个代码片段可以容纳多个文件,并且可以通过Git进行操作。因此Gist更像一个小型项目。

2014年11月2日,Gist在中国大陆被防火长城屏蔽,无法正常访问。[20]

Student Developer Pack[编辑]

GitHub与Algolia、Microsoft AzureBitnamiCrowdflower英语CrowdFlowerDigitalOceanDNSimple英语DNSimple、GitKraken、Heroku、HackHands、JetBrains、NamecheapName.com英语Name.com、Orchestrate、Screenhero、SendGrid英语SendGridStripeTravis CI虚幻引擎等共同合作,于2014年10月7日发起了一个名为GitHub学生开发者套装的项目。该项目为学生提供了一些免费的开发工具和服务。[21][22]

使用GitHub的项目[编辑]

许多知名程序库、开发框架都采用GitHub作为为主版本控制平台,其中包括:

统计[编辑]

GitHub于2008年2月运行。[41]

在2009年2月24日通过雅虎进行的一次采访中,GitHub队伍成员们宣布在GitHub运行的第一年,有共计46,000个公共版本库,它们中有17,000个是于最近一个月内创建的。当时,大概有6,200个版本库被派生(fork)至少一次,有4,600被合并。在另一个在2009年6月27日通过雅虎的采访中,Tom Preston-Werner宣布版本库数量已经提升到了90,000唯一性公共版本库,有12,000个版本库被派生(fork)至少一次,总共有135,000个版本库。[42]

在2010年6月,GitHub宣布它现在已经可提供1百万项目,它们中的60%是完整的版本库,但仍然有40%是“gist”或代码片段。2011年4月,GitHub宣称存放的代码库数量已达到2百万个[43]。2013年4月,GitHub用户数达到350万,代码库数量达到6百万个。[44]

融资[编辑]

  • 2012年,GitHub从Andreessen Horowitz筹集了1亿美元的资金,估值为7.5亿美元[45]
  • 2015年7月29日,GitHub表示已在红杉资本(Sequoia Capital)领投的一轮融资中筹集了2.5亿美元。 那一轮的其他投资者包括Andreessen Horowitz,Thrive Capital和IVP(机构风险合伙人)。该轮融资对公司的估值约为20亿美元。[45]
  • 2018年6月4日,微软宣布有意以75亿美元的价格收购GitHub。 该交易于2018年10月26日完成。GitHub继续作为社区,平台和业务独立运作。在Microsoft的领导下,该服务由Xamarin的Nat Friedman领导,并向Microsoft Cloud和AI执行副总裁Scott Guthrie汇报。 GitHub的首席执行官Chris Wanstrath被保留为“技术研究员”,并向Guthrie汇报。[45]

事件[编辑]

对GitHub的封锁[编辑]

GitHub曾在中国、俄罗斯和印度等国被审查和封锁,虽然此网站是单纯的技术社群一般较少具政治敏感消息的议题,但相关代码可用于开发突破网络审查等在线隐蔽软件或者中间件;同时因其具有较方便的协作功能特性,因此有部分用于非代码的政治诉求或敏感内容,因此相关政府要求对于该种信息进行管制。GitHub在收到政府对某一仓库的管制请求时,会将公文公开在官方仓库github/gov-takedowns页面存档备份,存于互联网档案馆)。[46]

  • 2013年1月20日,中国大陆政府的防火长城利用域名污染和关键词过滤等手段屏蔽GitHub[47][48]。23日,GitHub被解封,事件平息。
  • 2013年1月26日,有中国大陆的用户在访问GitHub时发现证书无效,经检查发现,GitHub的证书变为了一自签署的X.509证书,生成时间为2013年1月25日14时29分12秒,有效期一年,故有人推测GitHub疑似遭到了中间人攻击。攻击持续了约一个小时后停止,访问恢复正常。[49][50]
  • 2014年12月3日,GitHub因用户发布自杀教学内容而被俄罗斯封锁。[51]
  • 2014年12月31日,GitHub等32个网站因用户发布的伊斯兰国相关内容而被印度封锁[52]。2015年1月10日,GitHub被解封,但2015年9月12日GitHub在整个印度又被封锁。
  • 2015年3月26日,GitHub遭受了GitHub历史上最严重的拒绝服务攻击[53]。GitHub坚信攻击者的目的在于迫使GitHub删除特定类型的内容。[53]截止29日,攻击者共使用了四种DDoS攻击技术[54]。攻击于31日停止。外界有人传闻这是中国政府所为,但中国政府予以否认[55][56]。该攻击工具也被称为“大炮”。
  • 2015年8月,中国政府进一步收紧对互联网的控制。22日翻墙软件Shadowsocks作者迫于警方压力删除项目。25日,翻墙软件GoAgent作者自行删除自己的代码。同一天GitHub再次遭到来自中国大陆的DDoS攻击[57][58]。部分开发者认为此次攻击与中国政府有关。[59]
  • 2016年2月29日,编程随想的博客Github上发布了《赵家人》项目,整理出据称为中国大陆权贵阶层包括130多个家族、700多人的资料和关系网络。其中在6月8日,中国网络空间安全协会致信GitHub,称该项目下的一个issue页面存档备份,存于互联网档案馆)诽谤中华人民共和国最高领导人习近平有谋杀嫌疑,要求立刻删除。这个题为“习近平有重大杀人嫌疑!”的issue列举了16条指控习近平犯下谋杀罪行的理由,在2020年2月已有2000个以上的评论,至今仍然保持开放。该issue的作者用户名为CMB-news,可疑的是其于Github上的个人主页页面存档备份,存于互联网档案馆)显示该用户仅在2016年做出了数个不含任何代码的编辑,此后便无活动,亦未见其与项目zhao的正式关联。3天后GitHub公开了这封信页面存档备份,存于互联网档案馆)。这是GitHub收到的第一个来自代表中国大陆官方的请求[60]
  • 2020年3月26日,中国大陆多地用户访问GitHub Pages时发现遭遇中间人攻击证书变为一张通过私人QQ邮箱自签名的证书,生成时间为2019年9月26日。部分地区遭受攻击数小时后停止[61],但也有部分地区持续遭受攻击1-2天且证书变为了另一张使用MyMail自签名的证书[62]。DNSMon系统的证书信息显示同一时间京东等网站也遭到了相同攻击[63],尚无证据证明此次事件与审查有关。[64]