Py学习  »  Git

读完本文,你就比 99% 的人更会用 Github 了!

优达学城Udacity • 6 年前 • 577 次点击  


导语:全球最大的同性交友网站,你真的会用吗?

文/ 船长

来源/ 知乎机构号“景略集智” ,欢迎访问景略集智的官方网站(jizhi.im)



作为知名的全球最大同性交友社区网站,很多开发人员每天工作中都会用到 GitHub。


外人很难理解程序员们有多爱这只..章鱼猫?


在上面找项目、写代码可以说是每个程序员的日常了。


那么什么是 GitHub?为什么要用 GitHub?怎么用 GitHub?对于这些问题,最近在 GitHub 上出现了一篇面向 GitHub 新手的使用指南,详细解释了 GitHub 上的一些重要概念,集智对这篇 GitHub 入门帖子《A Developer’s Introduction to Github》进行了编译。


GitHub简介

简单来说,GitHub 是一个面向开发人员的网站,每天会有数百万的开发者聚在上面,一起讨论开源软件和项目。网站上也汇存了多达数十亿行的代码,用户也可以在上面报告使用软件和编程时遇到的问题。

总之,这是个为软件开发人员构建的平台,是围绕 Git 构建的。要么分享自己的代码,要么使用别人的代码。下面我们会解释 GitHub 上的一些重要概念,如何利用 GitHub 的功能让自己更高效的工作,以及如何将其它应用整合到你自己的编程工作中。


为什么要用GitHub?

现在你已经知道什么是 GitHub 了,那你可能就要问了:为什么要用它?

毕竟 GitHub 是由私人公司管理,并且该公司通过托管代码进行获利,那么为什么该用 GitHub,而不是 BitBucket 或者 GitLab 这样类似的平台呢?

除了个人偏好和技术原因外,还有一个很大的原因:几乎每个开发人员都在用GitHub,这就产生了巨大的网络效应。


主要的代码库随着时间推移已经从其它版本的控制系统迁移到了 Git 上,因为它更加便捷, GitHub 也一直投入很大的精力,努力满足开源社区的需求。


因此,今天不管你找什么样的程序库,99% 的情况下,你都能在 GitHub 上找到。原因就是用户多,资源也就多。

除了开源代码之外,很多开发人员能在 Github 上托管私人仓库(repository),因为这在 GitHub 上非常方便。


GitHub issues 是世界上最受欢迎的 bug 跟踪系统之一。它让项目所有者能够组织、标记和指派重要的 issue。如果你在其他人管理的项目上打开某个 issue,它会一直处于打开状态,直到你主动将它关闭(例如你知道了问题所在)或者项目所有人关闭了这个 issue。

有时你会得到明确的答案,在其它时候这个 issue 会呈打开状态并被标记上一些分类信息,然后开发人员可以回到这个 issue 解决问题,或根据反馈优化代码库。


大多数开发者在 GitHub 发布代码后,维护代码都没有直接报酬,因此通常你不会收到他们的即时回复。但一些开放源代码库由那些围绕该代码提供服务的公司发布,它们会提供具有更多功能的版本或者使用基于插件的系统。


社交编码

几年前GitHub上增加了“社交编码”(social coding)的标签,这是什么意思呢?和 GitHub 有什么关系?


并不是指“社会型编程”


在 GitHub 上,你可以在一些开发者的个人主页上点击“follow”来关注他们。

你也可以通过点击某个仓库上的“Watch”按钮来关注它。

不管是关注某个人还是某个仓库,都会显示在你的 dashboard 上。在 GitHub 上关注用户和仓库,跟你在 Twitter、微博上关注人不一样,你看不到他们说什么,但能看到他们做什么。


Stars

GitHub 的一大特点就是能给仓库添加星标。通过这步操作,你可以将仓库添加到“starred repositories”(已加星标仓库)的列表中,这样你就能发现自己感兴趣的项目。而且这也是 GitHub 上一个重要的排名机制之一,因为一个仓库或项目的 star 数越多,就说明它越重要越受欢迎,在搜索结果中也会处于更显眼的位置。一些很重要的项目可能有多达几万个 star 数。


GitHub 同样也有一个 trending 页面,它会显示特定时间内,比如今天、本周或本月,获得 star 数最多的仓库或项目。


Fork

项目的最后一个重要指标就是 fork 数。

这是 GitHub 如何工作的关键,因为 fork 是 Pull Request(PR)的基础,它是一个更改提议。某人可能会 fork 你的仓库,做些改动,然后创建一个 PR 让你去合并这些改动。


有时 fork 仓库的人可能也从来不让你去合并什么东西,只是他们很喜欢你的代码,决定在上面加点东西,或者修复了他们在体验过程中遇到的bug。


受欢迎=更好

言而总之,上面这些都是一个项目受欢迎度的重要指标。除此以外,项目最近一次提交的日期和作者参与 issue 跟踪系统的信息,也是衡量仓库或软件可信度的标准之一。


Pull Requests

在前面介绍了什么是 Pull Request(PR)。总之,一个人可以 fork 你的仓库,做一些改动,然后创建一个PR让你去合并这些改动。

某个项目可能会有几百个PR,总的来说,一个项目越受欢迎,PR 就越多,如 React 项目:


一旦有人提交了 PR(在 GitHub 界面上很容易操作),项目的核心维护人员会对其进行审核。

根据你的 PR 的范围不同(改动数量,或者改动影响幅度,以及涉及代码的复杂程度等),维护人员可能需要不同的时间来确认这些改动和项目是否兼容。


一个项目可能会有相关改进的明确时间表。维护人员希望用户能以比较简单的方式介绍 PR 中的体系结构。


也就是说,并不是每个 PR 都会被立刻接受,甚至都不能保证 PR 最终被接受。

在上面所举的例子中,仓库中甚至有个一年半以前的 PR,几乎所有的项目中都存在这种情况。


项目管理

除了 issue 之外,也就是开发者获得来自用户反馈的地方,GitHub 界面上还有其它帮助项目管理的功能。

其中一个就是 Projects,虽然它在 GitHub 的生态系统中比较新,用的人也不是很多,但它相当于一个看板,能帮助你组织问题和需要完成的工作。


Wiki 可以被用作文档。另一个受欢迎的项目管理功能是“里程碑”(milestone),它在 issue 页面上,你可以将 issue 分配给特定的 milestone,可以是发布目标。


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


Git tag 是特定 commit 的指针,如果完成的时间一致,能帮你回到之前版本的代码,无需引用特定的 commit。


Github 的发布版建立在 Git tag 的基础之上,代表了你的代码的完整发布版本,以及 zip 文件,发布说明和二进制 assets,这些可能代表了你的代码终端产品的完整工作版本。


虽然可以通过写程序创建 Git tag(比如使用命令行 Git 程序),但创建 GitHub 发布版需要手动操作,在 GitHub UI 上进行。你可以在 GitHub 上创建一个新版本,选择你想使用的 tag 发布。


比较commit

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

你最想做的事情之一,可能就是将一个分支与另一个分支相比较。你可能想将最新的 commit 与你当前所用版本进行比较,看看发生了哪些变动。


你可以用 GitHub 上的比较视图进行这项操作,只需在仓库名字后添加 /compare 即可。例如:

facebook/react



例如,这里我选择将最新的 React v15.x 和最新的 v16.0.0-rc 版本进行比较,查看有哪些改变:


我们会发现两个发布版本之间的 commits 不同之处和实际差异。


Webhooks和Services

GitHub 提供了有助于开发者工作流程的功能,其中一个就是 webhooks,另一个是 services。


  • Webhooks

当仓库出现特定问题时,webhooks 就会触发外部服务,比如当推送代码时,创建或删除了 tag,或者有人 fork 了仓库等。


当发生问题时,GitHub 会给我们让它用的 URL 发送 POST 请求。


这项功能的一个常见用法是当我们从本地计算机发送一个更新时,它会触发一个远程服务器从 GitHub 获取最新代码。


  • Services

GitHub service 和新的 GitHub 应用都是第三方集成程序,能够改善开发者的使用体验或提供服务。

例如,你可以设置一个测试运行器,每次用 TravisCI 推送一些新 commit 时都能自动运行测试。


你可以用 CircleCI 设置 continuous integration。也可以创建一个 Codeclimate 集成程序来分析代码,它还能提供 technical debt 和测试覆盖率的报告。


结语

总之,GitHub 是个很了不起的工具和服务平台,也是当今开发者们不可或缺的开发神器。本文只是帮你简单了解一下 GitHub,到上面真正体验一下你就知道它的魅力了。



— 完 —


希望这篇文章能帮到你,别忘了分享到朋友圈哦!

名师出高徒。想和领域大牛一起学人工智能?点击 [阅读原文] ,Google X 创始人,Google Brain 科学家带你深入《机器学习》纳米项目。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/BMojoZyzdU
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/9221
 
577 次点击