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 ...
随机推荐
- Ansible 学习目录
1. Ansible 安装 2. Ansible hosts 文件配置 3. Ansible 常用模块 4. Ansible playbook使用
- 查看 Linux 中文件打开情况(lsof)
前言 我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof. Linux 下有哪些文件 在介绍lsof ...
- 根据map中的某一key进行排序(快速排序实现)
/** * @author Gaoxl * 根据key值排序,要求key值能够转为Long类型(快速排序) * @param maps * @param key * @return */ public ...
- typescript点滴
typescript比较优质的学习资料都放在前端资料汇总 这些都是为了自己更好的理解和记忆而不是为了学术性的博客. 这里讲的是一些容易忘记的.混淆的. #### typescript的模块的导入3种方 ...
- JS笔记之第二天
一元运算符:++ -- 分为前++和后++ and 前--和后-- 如果++在后面,如:num++ +10参与运算,先参与运算,自身再加1 如果++在前面,如:++num+10参与运算,先自身加1, ...
- CF1311E Construct the Binary Tree
膜这场比赛的 \(rk1\) \(\color{black}A\color{red}{lex\_Wei}\) 这题应该是这场比赛最难的题了 容易发现,二叉树的下一层不会超过这一层的 \(2\) 倍,所 ...
- mysql基于二进制文件的主从复制
1.设置主服务器配置 必须在主服务器上启用二进制日志,因为二进制日志是将更改从主服务器复制到从服务器的基础,如果未启用log-bin,则无法进行复制 复制组内的每个服务 ...
- windows2016_x64搭建ELK(datasource->filebeat->logstash->elasticsearch->kibana)
windows2016_x64搭建ELK(datasource->filebeat->logstash->elasticsearch->kibana) 本文示例日志程序基于as ...
- Spring-微服务
项目框架 功能模块介绍 Eureka:https://baike.baidu.com/item/Eureka/22402835?fr=aladdin Ribbon:https://www.jiansh ...
- openssl CVE-2016-2107 漏洞检测
最近在安装python3 时升级openssl 版本,在摸索openssl 升级过程中才发现centos6 默认安装的openssl 1.0.1e 版本是有一个严重的漏洞的(Padding oracl ...