GitHub 是一个拥有数十亿行代码的网站,每天有数百万开发者聚集在一起,与开源软件进行协作和报告问题。简而言之,它是一个基于 Git 构建的软件开发人员的平台。作为开发人员,编程专业学生,科研人员,几乎每天都要在工作中使用 GitHub 或其他基于 Git 的工具。用于托管代码或协作其他人的代码。Flavio Copes 的这篇文章解释了 GitHub 的一些相关概念,以及如何它的一些功能使用来提高工作效率。
为什么选择 GitHub?
GitHub 由一家私人公司管理,而且还会通过托管人员代码获利。那么为什么你还选择使用它而不是选择像 BitBucket 或 GitLab 这样类似的平台呢?除个人偏好和技术原因外,还有一个重要原因:每个人都在使用 GitHub(好比 WeChat / QQ 的社交绑架,GitHub 从某种意义上而言属于开发绑架),因此网络效应非常大。主要的代码库已经随着时间的推移从其他版本控制系统迁移到 Git,因为更加便捷,并且 GitHub 定位十分明确,并投入了大量的努力来满足开源社区的需求。所以今天,你要查找的软件库基本上 99% 可以在 GitHub 上 找到它。因为平台十分便捷,除了开源代码之外,许多开发人员还会在 GitHub 上托管私有存储库。
下文将介绍开发人员需要知道的重要的 Git 的概念。
GitHub Issues
GitHub Issues 是世界上最受欢迎的 bug 跟踪器之一。项目的所有者可以利用它组织,标记和将 issue 与里程碑关联。如果你在他人管理的项目上打开某个 issue,它将保持打开状态,直到你将其关闭(如果你找出问题所在)或者项目管理者关闭它。有时候你会得到一个明确的答案,而在其他时候,这个 issue 将会保持开放并标记一些分类信息。然后开发人员可以回到这个 issue 来解决问题或改进你所反馈的代码库。大多数开发人员不能免费管理在 GitHub 上发布的代码,一些开放源代码库由那些围绕该代码提供服务的公司发布,针对具有更多功能的版本或者利用基于插件的体系结构。所以他们已经为开源项目付费给开发人员。
社区编程:Follow
几年前,GitHub 标志包含了“社交编程”标语。这是什么意思,是否存在必然联系?答案是肯定的。借助 GitHub,你可以通过访问用户个人资料并点击“关注”,或点击 repo 协议上的“观看”按钮来关注开发人员或软件库。在这两种情况下,活动都会显示在你的仪表盘中。关注用户或软件库跟 Twitter 的关注不同,你看不到别人说了什么。但是可以看到别人在做什么。
社区编程:Star
GitHub 的一大特色就是能够为软件库加 Star。用户可以通过此操作把某个软件库列入“已加星标的软件库”列表中,该列表能够帮助跟踪你感兴趣的项目并发现类似的项目。这也是最重要的评级机制之一,因为获得的星星越多,通常就代表该软件库越受欢迎/重要。因此,它在搜索结果中的排名也会更靠前。许多重大项目都有数万颗星。
另外,GitHub 也有一个 Trending 页面,它的特点是在特定的时间段(例如今日/本周、本月)盘点获得最多 Star 的软件库。进入这些 Trending 列表可能其他网络展示的效果不同,例如在其他网站上会出现,仅仅只是因为你在那个网站经常搜索该软件库。
社区编程:Fork &. PR
项目最后一个重要的网络指标是 Fork 的数量。这是 GitHub 如何工作的关键,因为 Fork 是 Pull Request(PR)的基础,这是一个更改提议。一个人可能会 fork 你的软件库,进行一些更改,然后创建一个 PR 来要求您合并这些更改。有时 fork 软件库的人可能永远不会要求你合并任何东西。他们可能会因为他们喜欢你的代码而 Fork 你的仓库,并在上面添加一些他们不想合并到原始软件库的东西。用户还可以修复他们遇到的一些 bug。
总而言之,这些都是项目受欢迎程度的关键指标。除了上述指标之外,最近一次提交的日期和作者参与issue跟踪系统的信息也是十分有用的,他可以体现一个软件库的可信赖度。
比较 commit
GitHub 提供了许多处理代码的工具。你可能最想要做的事情之一是将一个分支与另一个分支进行比较。或者你可能希望将最新的 commit 与您当前使用的版本进行比较,以随时查看更改。GitHub 允许你使用比较视图执行此操作:你只要在软件库名称末尾添加 /compare 即可。
比较 Webhooks
当软件库中出现特定问题时,Webhook 可以触发外部服务,例如,推送代码时,创建分支或创建或删除标记时。当上述情况发生时,GitHub 会向 URL 发送 POST 请求。此功能的一个常见用法是在我们从本地计算机上推送更新时,ping 远程服务器可以从GitHub获取最新代码。GitHub 服务和新的 GitHub 应用程序是第三方集成程序,可改善开发者的体验或为用户提供服务。
例如,您可以设置一个测试运行器,以便在每次使用 TravisCI 推送一些新 commit 时自动运行测试。你可以设置 Continuous Integration 来使用 CircleCI。你可以创建一个 Codeclimate 集成,分析代码并提供 “Technical Debt” 报告和测试覆盖率。
总之,GitHub 是一个了不起的工具和服务,是当今开发人员工具种的神器 —— 甚至已经有很多人建议程序员的简历不应该再是文档,而是个人 GitHub 门户。