1 引言

GitHub是为开发者提供Git仓库的托管服务,是一个让开发者与同事、同学及相同兴趣爱好者共享代码的完美场所。

GitHub公司总部位于美国旧金山,拥有一只似章鱼又似猫的吉祥物。

GitHub除提供Git仓库的托管服务外,还为开发者或团队提供了一系列功能,帮助其高效率、高品质地进行代码编写。(后面详述)

GitHub创始人之一Chris Wanstrath表示GitHub并非只是想实现分享代码的功能,认为这只是其中之一。

2 GitHub与Git的区别

目前,GitHub托管的仓库数已超千万,全世界的开发者都在使用它。但很多人仍然具有这样的疑问,GitHub与Git之间有什么区别和联系呢?

Git是一个版本控制系统,开发者将源代码存入名叫“Git仓库”的资料库中并加以使用。

而GitHub则是在网络上提供Git仓库的一项服务,也就是说,GitHub上公开的软件源代码全都由Git进行管理。因此,理解Git,是熟练运用GitHub的关键所在。

3 GitHub带来的变化

此前,用于辅助多人协同工作的软件层出不穷,然而在以程序员为代表的软件开发者之间,一直都没有一个用来辅助多人协同编程的关键性软件。

因为软件开发者们往往要将版本管理系统、BUG跟踪系统、代码审查工具、邮件列表、IRC等众多工具组合在一起,才能实现多人协作。

然而,GitHub的出现为这种软件开发协作模式带来了巨大的变化。

3.1 Pull Request

Pull Request功能实现了让素未谋面的开发者们隔着半个地球的距离共同开发软件。让开发者在本地对源代码进行更改后,可以向GitHub中托管的Git仓库请求合并。

开发者们还可以在Pull Request上通过评论交流,例如“修正了BUG,可以合并一下吗?”、“我试着做了这样一个新功能,可以合并一下吗?”等。

基于此功能,开发者可以轻松更改源代码,并公开更改的细节,然后向仓库提交合并请求。而且,如果请求的更改与项目的初衷相违,也可以选择拒绝合并。

Pull Request不但能轻松查看源代码的前后差别,还可以对指定的一行代码进行评论。基于此功能,开发者们可以针对具体的代码进行评论,使代码审查的工作变得前所未有的惬意。

3.2 对特定用户进行评论

GitHub中任务管理和BUG报告可以通过Issue进行交互。如果想让特定用户来看,只要用“@用户名”的格式书写,对方便会接到通知(Notifications),查看Issue。

当使用“@组织名”格式时,可以让属于该组织(Organization)的所有成员都收到通知,即实现同时向多人发送通知的方法。

当使用“#编号”格式时,会连接到该仓库所对应的Issue编号;使用“用户名/仓库名 #编号”格式时,可以连接到指定仓库所对应的Issue编号。

GitHub也提供了WiKi功能,开发者可以轻松创建文档,进行公开、共享。WiKi更新的历史记录也在Git中管理,可以让用户轻松更改。

3.3 GitHub Flavored Markdown

在GitHub上,用户所有用文字输入的功能都可以用GitHub Flavored Markdown(GFM)语法进行描述。

此语法可以让标记变得简单,以此写出的评论与文档也会更容易理解。并且此语法还允许用户在评论中添加文字表情,使用户间的交流更加顺利。

3.4 能看到更多其他团队的软件

GitHub提供的环境并不只局限于自己团队内部,只要将感兴趣的仓库添加至Watch,就可以在News Feed查看该仓库的相关信息。

如将全公司共用代码库的仓库添加到Watch中,便能在第一时间掌握最新版本的新功能或BUG修正的信息。如有必要,你还可提出意见并通过Pull Request提交自己的代码。

又如将其他团队正在开发的仓库添加到Watch中,就可以查看他们都在开发什么功能,一旦发现有用的功能或库,就可以立刻运用到自己的开发团队。

3.5 与开源软件相同的开发模式

将GitHub运用到企业中,便会带来与开源软件相同的开发模式。

已经熟悉开源软件开发的开发者不必专门去学习企业独自采用的工具,就可以直接加入到开发行列。

4 社会化编程

随着GitHub的出现,软件开发者们才真正意义上拥有了源代码。世界上任何人都可以比从前更加容易地获得源代码,将其自由更改并加以公开。

如今,世界众多程序员都在通过GitHub公开源代码,同时利用GitHub支持着自己日常的软件开发,这就是社会化编程带来的好处。

5 GitHub主要功能概述

  • Git仓库

    一般情况下,用户可以免费创建任意个GitHub提供的Git仓库,但如果需要建立只对特定人物或只对自己公开的私有仓库,则需要付费才能使用。

  • Organization

    一般情况下,个人使用时只需要个人账户便足够了,但如果是公司,建议使用Organization账户。其优点在于可以统一管理账户和权限,还能统一支付一些费用。

  • Issue

    实现将一个任务或问题分配给一个Issue进行追踪和管理的功能。

    在GitHub上,每一个功能更改或修正都对应一个Issue,讨论或修正都以这个Issue为中心进行。只要查看Issue,就能知道和这个更改相关的一切信息,并以此进行管理。

  • WiKi

    实现任何人都能随时对一篇文章进行更改并保存,因此可以多人共同完成一篇文章。该功能常用在开发文档或手册的编写中,并通过GFM语法进行编写。

  • Pull Request

    开发者向GitHub的仓库推送更改或功能添加后,可以通过Pull Request功能向别人的仓库提出申请,请求对方合并。

    Pull Request送出后,目标仓库的管理者等人将能够查看Pull Request的内容及其中包含的代码更改。

     同时,GitHub还提供了对Pull Request和源代码前后差别进行讨论的功能。通过此功能,可以以行为单位对源代码添加评论,让程序员之间高效地交流。

6 小结

未完待续……

本文章属于原创作品,欢迎大家转载分享,禁止修改文章的内容。尊重原创,转载请注明来自:躬耕南阳  https://www.cnblogs.com/yangmi511/

GitHub概述的更多相关文章

  1. 使用Jekyll搭建免费的Github Pages个人博客

    一.Git 1.Git概述 Git is a free and open source distributed version control system designed to handle ev ...

  2. Raft算法,从学习到忘记

    Raft算法,从学习到忘记 --Raft算法阅读笔记. --Github 概述 说到分布式一致性算法,可能大多数人的第一反应是paxos算法.但是paxos算法一直以来都被认为是难以理解,难以实现.S ...

  3. iOS开源加密相册Agony的实现(七)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  4. iOS开源加密相册Agony的实现(六)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  5. iOS开源加密相册Agony的实现(五)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  6. iOS开源加密相册Agony的实现(四)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  7. iOS开源加密相册Agony的实现(三)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  8. iOS开源加密相册Agony的实现(二)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  9. iOS开源加密相册Agony的实现(一)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

随机推荐

  1. php 安装扩展插件实例-gd库

    今天给php 安装一个扩展插件 gd库   一.gd库是什么 gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表.图形.缩略图以及其他图像的处理操作. gd库支持 ...

  2. [Linux-CentOS7]yum清华源CentOS7

    shell直接运行 cat > 01.yumrepo.sh << 'EOF' # 创建备份路径 mkdir -p /etc/yum.repos.d/repo.bak/ # 备份源 m ...

  3. CSS权威指南(第三版)

    CSS权威指南(第三版).pdf 网盘: https://545c.com/file/24657411-425141851   获取码:  276922

  4. C# 获取鼠标在屏幕上的位置

    获取鼠标位置及鼠标单击了哪个按键.private void GetMousePoint() {     Point ms = Control.MousePosition;     this.label ...

  5. Cassandra 在 360 的实践与改进

    分享嘉宾:王锋 奇虎360 技术总监 文章整理:王彦 内容来源:Cassandra Meetup 出品平台:DataFunTalk 注:欢迎转载,转载请留言. 导读:2010年,Dropbox 在线云 ...

  6. MySQL存储过程和游标

    一.存储过程 什么是存储过程,为什么要使用存储过程以及如何使用存储过程,并且介绍创建和使用存储过程的基本语法. 什么是存储过程: 存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些 ...

  7. (好题)POJ3057

    二分+二分图匹配+BFS 题意: 墙壁“X”,空区域(都是人)“.”, 门“D”. 人向门移动通过时视为逃脱,门每秒能出去一个人,人可以上下左右移动,墙阻止移动. 求最优移动方案下,最后一个人逃脱的最 ...

  8. NFS服务配置 Linux

    两台机器: NFS服务器:192.168.1.100 (我的是Ubuntu系统) 客户机:192.168.1.123 (保证两台机器互相可以ping通) 需求:在NFS服务器上创建一个共享文件夹/ho ...

  9. 服务端性能测试工具校验v1.2

    服务端性能测试工具校验v1.2 想知道压力工具实际并发多少,想知道压力工具统计响应数据准不准,来试试这款校准工具. 更新说明: 1.修正总接收请求显示上限. 2.随着响应时间增加,自动增加处理线程. ...

  10. SpringCloud入门学习

    我相信,如果小伙伴们能来到这里,肯定对微服务有一定的认识. 我们之前创建web项目的时候,常见的有两种方式: 1).创建一个war包,然后放在servlet容器中运行(比如Tomcat等); 2).使 ...