什么是Github
???????GitHub 是为开发者提供 Git 仓库的托管服务。是一个让开发者与朋友、同事、同学及陌生人共享代码的完美场所。
1. Github 公司与 octocat GitHub 公司位于美国旧金山,拥有一只不知是章鱼还是小猫的吉祥物 octocat。它经常被人们创造出各种新的造型。
2. 并不只是 Git 仓库的托管服务 Github 除提供 Git 仓库的托管服务外,还为开发者或团队提供了一系列功能,帮助其高效率、高品质地进行代码编写。 ?
3. Github 与 Git 的区别 ?????Github 与 Git 是完全不同的两个东西。在 Git 中,开发者将源代码存入名为“ Git 仓库 ”的资料库中并加以使用。而 GitHub 则是网络上提供 Git 仓库的一项服务。 ?????也就是说,GitHub 上公开的软件源代码全都是由 Git 进行管理。理解 Git,是熟练运用 GitHub 的关键所在。
? ?
使用 GitHub 会带来哪些变化
1. 协议形式变化 ???????此前,在以程序员为代表的软件开发者之间,一直都没有一个用来辅助多人协同编程的关键性软件。因此软件开发者们往往要将版本管理系统、BUG 跟踪系统、代码审查工具、邮件列表、IRC 等众多工具组合在一起,以实现多人协作。但是,下面这项成果的出现,可以让素未谋面的开发者们隔着半个地球的距离共同开发软件。
???????Pull Request 是指:开发者在本地对源代码进行更改后,向 GitHub 中托管的 Git 仓库请求合并的功能。开发者可以在 Pull Request 上通过评论交流,例如“修正了 BUG,可以合并一下吗?”以及“我试着做了这样一个新功能,可以合并一下吗?”等。通过这个功能,开发者可以轻松更改源代码,并公开更改的细节,然后向仓库提交合并请求。而且,如果请求的更改与项目的初衷相违,也可以选择拒绝合并。 ? ????????GitHub 的 Pull Request 不但能轻松查看源代码的前后差别,还可以对指定的一行代码进行评论。通过这一功能,开发者们可以针对具体的代码进行讨论,使代码审查的工作变得前所未有地惬意。 ?
????????方便和快捷并不是 Pull Request 的专利。任务管理和 BUG 报告可以通过 Issue 进行交互。如果想让特定用户来看,只要用“@ 用户名”的格式书写,对方便会接到通知(Notifications)。由于也提供了 Wiki 功能,开发者可以轻松创建文档,进行公开、共享。Wiki 更新的历史记录也在 Git 中管理,可以让用户轻松更改。 ?
- GitHub Flavored Markdown
?????????在 GitHub 上, 用 户 所 有 用 文 字 输 入 的 功 能 都 可 以 用 GitHub Flavored Markdown(GFM)语法进行描述。这个语法可以让标记变得简单,以此写出的评论与文档也会更容易理解。只记住一个语法便能在多种交流中使用,何乐而不为呢 A ?它还有一个很特别的功能,那就是可以在评论中添加文字表情,使用户间的交流更加顺利。
GitHub 中可使用的描述方法并不止“@ 用户名”一种。 输入“@ 组织名”可以让属于该 Organization(组织)的所有成员收到通知注。输入“@ 组织名 / 团队”可以让该团队的所有成员收到通知。这就是同时向多人发送通知的方法。 输入“# 编号”,会连接到该仓库所对应的 Issue 编号。输入“用户名 / 仓库名 # 编号”则可以连接到指定仓库所对应的 Issue编号。只要按照这类特定格式书写便会自动创建链接。 多加利用上述这些功能,可以让交流更有效率。
2. 能看到更多其他团队的软件 GitHub 快捷的环境为开发者带来的合作伙伴,并不只局限于自己团队内部。只要将感兴趣的仓库添加至 Watch 中,就可以在 News Feed 查看该仓库的相关信息。 ?????????比如,将全公司共用代码库的仓库添加到 Watch 中,便能在第一时间掌握最新版本的新功能或 BUG 修正的信息。将隔壁团队正在开发的仓库添加到 Watch 中,就可以每天查看他们都在开发什么功能。一旦发现有用的功能或者库,可以立刻运用到自己的开发团队。
3. 与开源软件相同的开发模式 ???????GitHub 运用到企业中,便会带来与开源软件开发相同的开发模式。已经熟悉开源软件开发的开发者不必专门去学习企业独自采用的工具,就可以直接加入到开发行列。 ???????也就是说,开源软件世界的软件开发与企业内的软件开发将不再有隔阂。在某些企业中,这两者的区别恐怕就是仓库公开与否的区别了。 ??
社会化编程
????????SOCIAL CODING:GitHub 这一服务创造了社会化编程的概念。随着 GitHub 的出现,软件开发者们才真正意义上拥有了源代码。世界上任何人都可以比从前更加容易地获得源代码,将其自由更改并加以公开。如今,世界众多程序员都在通过 GitHub 公开源代码,同时利用 GitHub 支持着自己日常的软件开发。 ???????在 GitHub 出现之前,软件开发中只有一小部分人拥有更改源代码的权利,这个特权阶级掌握着开发的主导权。开发者在改写、发布源代码之外,往往需要花更多时间和精力去说服这个特权阶级。这导致了许多起初效率很高的流行软件越发保守化,最终被时代所抛弃。
为什么需要社会化编程
如果您是程序员的面试官,两者之间您会选择哪一位呢?
-
能查看到以前所写代码的程序员 or 无法查看的程序员 -
精通最新软件的程序员 or 不精通的程序员 -
对语言或软件差异带来的不同文化有所理解的程序员 or 不理解的程序员 ? 为了不成为后一种程序员,理解社会化编程和 GitHub 至关重要。 -
不要闭目塞听,要接触不同的文化 ???????在工作中接触非公开代码的职业程序员们,更应该接触世界上的不同文化,拓展见闻。如果只在公司这一封闭的小世界中敲代码,往往在不知不觉间,手中的技术就变得陈腐不堪了。 ???????放眼世界,注意那些日新月异的源代码、技术、设计以及文化,会对自己编写的源代码及成果带来巨大影响。 -
会写代码的程序员更受青睐 ???????在过去,程序员只需有简单的编程经验,用人单位更重视其人品、协调性、管理能力。但如今,能踏踏实实编写出代码的职业程序员反而更受欢迎。这是由于近年来随着技术的不断发展,开发一项服务需要用到多种编程语言和技术,以求兼容多种硬件设备。在这种背景下,判断一个求职者能否编写项目所需的源代码,最切实可行的办法就是看他实际写出的东西。 ????????如今,GitHub 的出现已经让所有人平等拥有公开源代码的权利。看看 Facebook 或 Twitter 能了解一个人的品性,而看看 GitHub 就能了解一个程序员的实力。 ????????今后,进行社会化编程的程序员会越来越多,从而成为一种普遍现象。在不远的将来,应聘的成功与否将取决于您曾经编写过的代码。因 此,面向全世界的代码公开必将越发重要。以编写代码为生的职业程序员们,更应该进行社会化编程。 -
GitHub 最大的特征是“面向人” ???????GitHub 与以往的仓库托管服务最大的不同点,就在于它以人为中心。 ???????以往的仓库托管服务都是以项目为中心,每个项目就是一个信息封闭的世界。虽然能够知道一个仓库的管理者是谁,但这个管理者还在做哪些事,我们就不得而知了。 ???????GitHub 除项目之外,还可以把注意力集中到人身上。我们不但能阅览一个人公开的所有源代码,只要查看其控制面板中的 News Feed,还能知道他对哪些仓库感兴趣,什么时候做过提交等。一个人在 GitHub进行的开发是一目了然的。 ???????您可以将注意力聚焦到感兴趣的人身上。他既可以是您崇拜已久的超级黑客,也可以是同校同学或公司的同事。 ???????能同时关注人与代码,是 GitHub 为我们带来的一个新的世界。
GitHub 提供的主要功能
-
Git 仓库 ????????一般情况下,我们可以免费建立任意个 GitHub 提供的 Git 仓库。但如果需要建立只对特定人物或只对自己公开的私有仓库,则需要支付使用费。 -
Organization ???????通常来说,个人使用时只要使用个人账户就足够了,但如果是公司,建议使用 Organization 账户。它的优点在于可以统一管理账户和权限,还能统一支付一些费用。 ???????如果只使用公开仓库,是可以免费创建Organization 账户的。因此,如果是以交流群或 IT 小团体的形式进行软件开发时不妨试一试。 -
Issue ?????? Issue,是将一个任务或问题分配给一个 Issue 进行追踪和管理的功能。可以像 BUG 管理系统或 TiDD(Ticket-driven Development)的Ticket一样使用。在 GitHub 上,每当进行我们即将讲解的 Pull Request,都会同时创建一个 Issue。 ????????每一个功能更改或修正都对应一个 Issue,讨论或修正都以这个Issue 为中心进行。只要查看 Issue,就能知道和这个更改相关的一切信息,并以此进行管理。 ????????在 Git 的提交信息中写上 Issue 的 ID(例如“#7”),GitHub 就会自动生成从 Issue 到对应提交的链接。另外,只要按照特定的格式描述提交信息,还可以关闭 Issue。 -
Wiki ?????? 通过 Wiki 功能,任何人都能随时对一篇文章进行更改并保存,因此可以多人共同完成一篇文章。该功能常用在开发文档或手册的编写中。可以通过 GFM 的语法进行书写。 ???????Wiki 页也是作为 Git 仓库进行管理的,改版的历史记录会被切实保存下来,使用者可以放心改写。由于其支持克隆至本地进行编辑,所以程序员使用时可以不必开启浏览器。 -
Pull Request ?????? 开发者向 GitHub 的仓库推送更改或功能添加后,可以通过 Pull Request 功能向别人的仓库提出申请,请求对方合并。 ????????Pull Request 送出后,目标仓库的管理者等人将能够查看 Pull Request 的内容及其中包含的代码更改。 ???????同时,GitHub 还提供了对 Pull Request 和源代码前后差别进行讨论的功能。通过此功能,可以以行为单位对源代码添加评论,让程序员之间高效地交流。
写在最后: 首先,如果本篇文章有任何错误,烦请读者告知!不胜感激! 其次,本篇文章仅用于日常学习以及学业复习,如需转载等操作请告知作者(我)一声! 最后,本文会持续修改和更新,如果对本分栏的其他知识也感兴趣,可以移步目录导航专栏,查看本分栏的目录结构,也更方便对于知识的系统总结! 兄弟姐妹们,点个赞呗! 感谢!笔芯!
|