GitHub概述
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概述的更多相关文章
- 使用Jekyll搭建免费的Github Pages个人博客
一.Git 1.Git概述 Git is a free and open source distributed version control system designed to handle ev ...
- Raft算法,从学习到忘记
Raft算法,从学习到忘记 --Raft算法阅读笔记. --Github 概述 说到分布式一致性算法,可能大多数人的第一反应是paxos算法.但是paxos算法一直以来都被认为是难以理解,难以实现.S ...
- iOS开源加密相册Agony的实现(七)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- iOS开源加密相册Agony的实现(六)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- iOS开源加密相册Agony的实现(五)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- iOS开源加密相册Agony的实现(四)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- iOS开源加密相册Agony的实现(三)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- iOS开源加密相册Agony的实现(二)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- iOS开源加密相册Agony的实现(一)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
随机推荐
- apache工具
组件 功能介绍HttpClient 提供HTTP客户端与服务器的各种通讯操作. 现在已改成HttpComponentsIO io工具的封装.Lang3 Java基本对象方法的工具类包 如:String ...
- Digital Twin 数字孪生
GE的一个NB视频:http://v.youku.com/v_show/id_XMjk0NTMzODIyNA==.html http://www.gongkong.com/news/201701/35 ...
- php 安装扩展插件实例-gd库
今天给php 安装一个扩展插件 gd库 一.gd库是什么 gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表.图形.缩略图以及其他图像的处理操作. gd库支持 ...
- 杭电-------2052Picture(C语言)
#include<stdio.h> int main() { int width, height; int i, j; while (~scanf("%d %d", & ...
- 使用ASP.NET Core构建RESTful API的技术指南
译者荐语:利用周末的时间,本人拜读了长沙.NET技术社区翻译的技术标准<微软RESTFul API指南>,打算按照步骤写一个完整的教程,后来无意中看到了这篇文章,与我要写的主题有不少相似之 ...
- a标签没有闭合引起自动插入很多a标签的问题
a标签中间没有内容的情况下,很容易忽略闭合 a标签一定要闭合,否则会在后面每个div后面插入同一个a标签 要以如下形式闭合: <div class="v5-index-containe ...
- count(1)比count(*)效率高?
SELECT COUNT(*) FROM table_name是个再常见不过的统计需求了. 本文带你了解下Mysql的COUNT函数. 一.COUNT函数 关于COUNT函数,在MySQL官网中有详细 ...
- python学习----文件的操作(2)
1.文件指针的操作 f=open("yesterday","r",encoding="utf-8") #文件句柄 #文件内指针的操作 pri ...
- 一个C语言程序是由( )组成?
A) 一个主程序和若干子程序组成 B)一个或多个函数组成 C) 若干过程组成 D) 若干子程序组成 正确答案 B 解析 [解析] 一个C源程序是由一个main函数和若干个其他函数组成的.函数是C程序的 ...
- C# monitor keyboard and print pressed key
using System; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnos ...