号称“开发者神器”的GitHub,到底该怎么用?

2018 年 3 月 29 日 算法与数据结构

开源最前线(ID:OpenSourceTop) 猿妹 编译

链接:https://medium.freecodecamp.org/a-developers-introduction-to-github-1034fa55c0db


GitHub是一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,与开源软件进行协作和报告问题。简而言之,它是一个基于Git构建的软件开发人员的平台。


作为开发人员,你几乎每天都要在工作中使用GitHub或其他基于Git的工具。用于托管代码或协作其他人的代码。这篇文章解释了GitHub的一些相关概念,以及如何它的一些功能使用来提高你的工作效率。


为什么选择GitHub?


现在你已经知道GitHub的用途了,但你可能会问为什么我要使用GitHub呢?


毕竟,GitHub由一家私人公司管理,而且还会通过托管人员代码获利。那么为什么你还选择使用它而不是选择像BitBucket或GitLab这样类似的平台呢?


除个人偏好和技术原因外,还有一个重要原因:每个人都在使用GitHub,因此网络效应非常大。


主要的代码库已经随着时间的推移从其他版本控制系统迁移到Git,因为更加便捷,并且GitHub定位十分明确,并投入了大量的努力来满足开源社区的需求。


所以今天,你要查找的软件库基本上99%可以在GitHub上找到它。因为平台十分便捷,除了开源代码之外,许多开发人员还会在GitHub上托管私有存储库。


下面,我们开始了解一下开发人员需要知道的重要的Git的概念。



GitHub Issues


GitHub Issues是世界上最受欢迎的bug跟踪器之一。项目的所有者可以利用它组织,标记和将 issue 与里程碑关联。


如果你在他人管理的项目上打开某个issue,它将保持打开状态,直到你将其关闭(如果你找出问题所在)或者项目管理者关闭它。


有时候你会得到一个明确的答案,而在其他时候,这个issue将会保持开放并标记一些分类信息。然后开发人员可以回到这个issue来解决问题或改进你所反馈的代码库。


大多数开发人员不能免费管理在 GitHub 上发布的代码,一些开放源代码库由那些围绕该代码提供服务的公司发布,针对具有更多功能的版本或者利用基于插件的体系结构。所以他们已经为开源项目付费给开发人员。



社交编码



几年前,GitHub标志包含了“社交编码”标语。这是什么意思,是否存在必然联系?答案是肯定的。


Follow


借助GitHub,你可以通过访问用户个人资料并点击“关注”,或点击repo协议上的“观看”按钮来关注开发人员或软件库。


在这两种情况下,活动都会显示在你的dashboard中。关注用户或软件库跟Twitter的关注不同,你看不到别人说了什么 ?但是可以看到别人在做什么。



Star


GitHub的一大特色就是能够为软件库加Star。用户可以通过此操作把某个软件库列入“已加星标的软件库”列表中,该列表能够帮助跟踪你感兴趣的项目并发现类似的项目。


这也是最重要的评级机制之一,因为获得的星星越多,通常就代表该软件库越受欢迎/重要。因此,它在搜索结果中的排名也会更靠前。许多重大项目都有数万颗恒星。


GitHub也有一个trending页面,它的特点是在特定的时间段(例如今日/本周、本月)盘点获得最多Star的软件库。


进入这些Trending列表可能其他网络展示的效果不同,例如在其他网站上会出现,仅仅只是因为你在那个网站经常搜索该软件库。



Fork


项目最后一个重要的网络指标是Fork的数量。


这是GitHub如何工作的关键,因为Fork是Pull Request(PR)的基础,这是一个更改提议。一个人可能会fork你的软件库,进行一些更改,然后创建一个PR来要求您合并这些更改。


有时fork软件库的人可能永远不会要求你合并任何东西。他们可能会因为他们喜欢你的代码而Fork你的仓库,并在上面添加一些他们不想合并到原始软件库的东西。用户还可以修复他们遇到的一些bug。



流行=更好


总而言之,这些都是项目受欢迎程度的关键指标。除了上述指标之外,最近一次提交的日期和作者参与issue跟踪系统的信息也是十分有用的,他可以体现一个软件库的可信赖度。



Pull Request(PR)


在前一节中,有介绍了Pull Request(PR)是什么。重申一下,一个人可能会fork你的存储库,做一些改变,然后创建一个PR来要求你合并这些改变。



一个项目可能有数百个PR请求,通常情况下,项目越受欢迎,它的PR越多,如React项目:

● 一旦一个人提交了PR,需要由项目的核心维护者进行审查。

● 根据你的请求范围(更改次数,受更改影响的事件数量或涉及代码的复杂程度),维护人员可能需要不等时间来确保更改与项目兼容。

● 一个项目可能有一个明确的改进时间表,当你在PR请求中引入复杂的体系结构时,维护人员希望你可以尽可能简单的方式介绍。


也就是说,PR并不总是被立马处理,并且不能保证PR会被接受。


在我上面发布的例子中,repo中有一个可以追溯到一年半以前的PR。这都是十分常见的,原因就是上面提到的这些。



项目管理


除了issue(开发人员获得用户反馈的地方)外,GitHub界面还提供了少量项目管理功能。


其中之一是Project。它在生态系统中是比较新的,很少被使用,但它是一个帮助组织完成问题和工作的看板。


该wiki可被用作用户文档。Go编程语言的GitHub Wiki是最令我印象深刻的。


另一个受欢迎的项目管理功能是里程碑。它是issue页面的一部分,你可以将问题分配给特定的里程碑,其中包括发布目标。


说到发布,GitHub 通过引入发布来增强了Git标签的功能。


Git标记是特定commit的指针,如果完成时间一致,它可以帮助你回到之前版本的代码,而无需引用特定的commit。


GitHub发布版建立在Git标签的基础上,代表代码的完整版本,也可能代表代码最终完整工作版本的Zip文件,发行说明和二进制资产。


虽然可以通过编程创建Git标签(例如,使用命令行git程序),但GitHub版本是通过GitHub UI手动创建。你可以利用GitHub创建一个新版本,并选择你想应用的标签。



比较commit


GitHub提供了许多处理代码的工具。


你可能最想要做的事情之一是将一个分支与另一个分支进行比较。或者你可能希望将最新的commit与您当前使用的版本进行比较,以随时查看更改。


GitHub允许你使用比较视图执行此操作:你只要在软件库名称末尾添加/compare 即可。例如:https://github.com/facebook/react/compare



在下图中,我将最新的React v15.x与最新v16.0.0-rc版本进行比较,以便了解更改内容。


这个视图给我们展示了所提交两个版本(或标签或commit)已更改,以及之间的实际差异。




Webhooks和服务


GitHub提供了许多有助于开发人员工作流程的功能,例如webhook和服务。



Webhooks


当软件库中出现特定问题时,Webhook 可以触发外部服务,例如,推送代码时,创建分支或创建或删除标记时。


当上述情况发生时,GitHub会向URL发送POST请求。


此功能的一个常见用法是在我们从本地计算机上推送更新时,ping远程服务器可以从GitHub获取最新代码。


GitHub 服务和新的 GitHub 应用程序是第三方集成程序,可改善开发者的体验或为用户提供服务。


例如,您可以设置一个测试运行器,以便在每次使用TravisCI推送一些新commit时自动运行测试。


你可以设置 Continuous Integration 来使用 CircleCI。你可以创建一个Codeclimate集成,分析代码并提供“Technical Debt”报告和测试覆盖率。



最后的话


GitHub是一个了不起的工具和服务,是当今开发人员工具种的神器。本教程可以帮助你入门GitHub,在GitHub开源(或闭源)项目上工作的体验真的是不容错过的。



●编号617,输入编号直达本文

●输入m获取文章目录


登录查看更多
4

相关内容

纽约州立大学布法罗分校(University at Buffalo–SUNY)成立于 1846 年,学校于 1962 年并入纽约州立大学(SUNY)系统。作为纽约州立大学系统中的旗舰机构,纽约州立大学布法罗分校是 SUNY 系统 64 个校区的中规模最大、综合性最强的校区。同时,学校是美国大学协会的成员。纽约州立大学布法罗分校是一所致力于学术卓越的一流研究密集型公立大学。学校以坚韧乐观的文化、足智多谋的思维和务实的梦想为特色,吸引了州内和来自全球是学生。其计算机专业在 CSRankings 排名 43,USnews 排名 61,学生将受益于计算机系全面多样的研究方向: https://engineering.buffalo.edu/computer-science-engineering/research/research-areas.html
AI创新者:破解项目绩效的密码
专知会员服务
33+阅读 · 2020年6月21日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
【浙江大学】人脸反欺诈活体检测综述
专知会员服务
31+阅读 · 2020年4月15日
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
抖音爬虫
专知
3+阅读 · 2019年2月11日
2018年7月份GitHub开源项目排行榜
算法与数据结构
15+阅读 · 2018年8月3日
3月份GitHub上最热门的开源项目
大数据技术
3+阅读 · 2018年4月10日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
无需一行代码就能搞定机器学习的开源神器
人工智能头条
6+阅读 · 2017年11月7日
这位程序员为什么要弃用Facebook?
CSDN
5+阅读 · 2017年7月14日
Teacher-Student Training for Robust Tacotron-based TTS
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Knowledge Flow: Improve Upon Your Teachers
Arxiv
5+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年10月8日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关VIP内容
AI创新者:破解项目绩效的密码
专知会员服务
33+阅读 · 2020年6月21日
打怪升级!2020机器学习工程师技术路线图
专知会员服务
98+阅读 · 2020年6月3日
【浙江大学】人脸反欺诈活体检测综述
专知会员服务
31+阅读 · 2020年4月15日
相关资讯
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
一个牛逼的 Python 调试工具
机器学习算法与Python学习
15+阅读 · 2019年4月30日
抖音爬虫
专知
3+阅读 · 2019年2月11日
2018年7月份GitHub开源项目排行榜
算法与数据结构
15+阅读 · 2018年8月3日
3月份GitHub上最热门的开源项目
大数据技术
3+阅读 · 2018年4月10日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
GitHub上12月份最热门开源项目
程序猿
4+阅读 · 2018年1月9日
无需一行代码就能搞定机器学习的开源神器
人工智能头条
6+阅读 · 2017年11月7日
这位程序员为什么要弃用Facebook?
CSDN
5+阅读 · 2017年7月14日
相关论文
Teacher-Student Training for Robust Tacotron-based TTS
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Knowledge Flow: Improve Upon Your Teachers
Arxiv
5+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年10月8日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
4+阅读 · 2016年12月29日
Top
微信扫码咨询专知VIP会员