GitHub 是程序员日常使用的网站,许多人可能仅仅将其视为一个代码托管平台,通常用来保存代码或提交一些问题(issues)。然而,今天我想重新介绍一下这个平台。GitHub 早已超越了分布式版本控制系统的范畴,发展成了一个全面的开发者生态系统。它集成了开发工具、自动化流程(如持续集成与持续部署,CI/CD)以及 AI 编程助手(如 GitHub Copilot),为开发者提供从代码管理到云端部署的一站式解决方案。
开发平台
GitHub 是一个出色的开发平台,为广大开发者提供了卓越的开发体验。常有朋友问我如何配置开发环境,尤其是当他们只有一台配置较低的电脑时,是否还能进行某些项目的开发。现在,有了 GitHub,这一切皆有可能。GitHub 在开发和测试体验方面进行了诸多改进,即使你没有一台高性能的电脑,也可以通过浏览器完成整个产品的开发、测试和部署等工作。
GitHub 的功能非常丰富,一篇文章难以涵盖全部。但我个人建议大家尝试以下几项功能,它们能显著提升开发效率和体验。
Github Codespace
Github 最新推出的 Codespaces 可以实现基于 VS Code 的云端代码编译。现在,你在手机、平板上都可以直接进行开发。云端开发不能更美好了,用上 Codespaces 后,不仅可以把 IDE 卸载掉,什么 Conda、Docker 都可以删了「大误」。
Codespaces 由 Visual Studio technology 提供技术支持,集成了浏览器版的完全 VS Code 编辑程序,支持代码补全与导航、扩展插件以及终端访问等多项功能于一身。如果开发者更倾向于使用桌面版 IDE 进行开发,也可以在 GitHub 中打开 codespace 之后再将其连接到桌面 IDE 中。
Github Copilot
GitHub Copilot 是一款 AI 结对程序员,可帮助您更快、更少地编写代码。它从注释和代码中提取上下文,以立即建议单独的行和整个函数。GitHub Copilot 由 GitHub、OpenAI 和 Microsoft 开发的生成式 AI 模型(CodeX)提供支持。它可作为 Visual Studio Code、Visual Studio、Neovim 和 JetBrains 等集成开发环境 (IDE) 套件的扩展。
以下是对它的简单介绍:
功能特点
- 代码自动生成:能根据注释或部分代码提示生成复杂代码块和算法实现,如开发者只需写注释描述功能,它就能写出相应代码。
- 编写测试代码:通过简单描述测试目的,即可自动生成对应的测试代码,适用于快速进行单元测试。
- 支持多语言:支持Python、Java、Go、Ruby、C++、JavaScript等多种编程语言。
- 编写文档注释:帮助开发者生成代码的文档注释,加快文档编写,提升代码可读性和可维护性。
- 代码解释与优化:可对代码中不健壮或可能隐藏bug的部分给出修复建议,还能简化代码,提升代码的可读性与可维护性。
Github Actions
Github Actions是Github自带的强大持续集成与持续部署(CI/CD)服务,它以工作流为核心,通过YAML文件配置,能被各类事件触发,比如代码推送、拉取请求创建。一个工作流由多个作业组成,每个作业又包含多个步骤,步骤中可调用官方、社区分享或自定义的动作 ,从代码提交后自动运行测试、检查代码质量,到通过测试后自动部署应用,再到自动化生成文档、更新依赖等重复性任务,都能一站式搞定,与Github深度集成,界面直观,易用且扩展性强。
Github Actions 提供了一个 Pipeline as Code 的 CI/CD 服务,也就是自动集成、自动部署。它可以实现以下功能:
- 代码构建:自动编译构建代码,生成镜像文件推送到云端会儿生成 release 发布
- 部署发布:自动发布软件包到仓库,例如 pypi,npm,maven,docker hub 等
- 自动化测试:自动运行运行单元测试、集成测试、端到端测试等
- 定时运行:定时自动更新文章,自动生成测试覆盖率报告等
而且 Actions 还可以接入外部服务,进行静态代码分析,安全漏洞扫描等流程。 如果由于安全隐私的原因,不能使用公有服务,Actions 还支持私有化部署,满足你的隐私需要。
Github security
GitHub Security 是 GitHub 提供的一套全面安全解决方案,旨在帮助开发者识别和修复代码中的漏洞。通过集成的自动化安全扫描、依赖项警报和高级威胁检测功能,GitHub Security 不仅保障了代码的安全性,也提升了开发过程的可靠性和效率,使开发者能够更专注于创新而不是安全忧虑。
Github packages
GitHub Packages 是 GitHub 提供的一项服务,允许开发者轻松托管和管理项目所需的软件包。它与 GitHub 的代码托管和 CI/CD 功能无缝集成,使开发者能够直接从 GitHub 仓库发布和安装包,同时支持多种包管理格式,如 npm、Maven、NuGet 和 Docker 等。通过 GitHub Packages,开发者可以更方便地共享代码、版本控制依赖项,并确保软件包的安全性和可追溯性,从而优化项目的开发流程。
Github Discussions
GitHub Discussions 是一个互动平台,旨在促进开发者社区之间的交流与协作。它为每个项目提供了一个专属空间,开发者可以在这里提出问题、分享见解、讨论新特性或对项目进行头脑风暴。通过结构化的讨论线程和可标记最佳答案的功能,GitHub Discussions 有助于知识的积累与共享,增强社区的互动性和活力,同时也为项目维护者提供了集中管理反馈和建议的便利途径。
它与 issues 的区别是:
功能 | Discussions | Issues |
---|---|---|
定位 | 开放式讨论、知识共享 | 任务跟踪、Bug 报告、功能请求 |
结构化 | 支持分类和标签,类似论坛 | 通常按里程碑、优先级分类 |
互动性 | 强调多人对话(无固定解决流程) | 聚焦问题解决(需关闭 / 标记完成) |
适用场景 | “如何实现 X?”、“建议优化 Y” | “修复 Bug Z”、“添加新功能 W” |
同时,Discussions 还可以当做一些静态博客的评论区,例如 giscus,它可以将评论自动保存到 Github 的 Discussions 中,解决了静态博客无法保存评论数据的问题。我的博客评论区就是使用 Github Discussions 实现的。
Github Pages
GitHub Pages 是 GitHub 提供的免费静态网站托管服务,专为开发者设计,方便创建和发布个人网站或项目文档。通过将静态文件推送至特定格式的仓库(如 <用户名>.github.io
),GitHub 会自动进行构建并发布到专属域名,同时支持绑定自定义域名和 HTTPS。GitHub Pages 深度集成了 Jekyll 静态网站生成器,允许用户一键应用主题模板,同时兼容其他静态生成器如 Hugo 和 VuePress。因此,它特别适合用于搭建技术博客、开源项目文档等,提供了一个简单高效的方式来展示和分享开发者的工作。
GitHub code search
GitHub Code Search 是 GitHub 提供的一项强大功能,旨在帮助开发者更快速、更高效地搜索和导航代码库。它允许用户在整个 GitHub 平台上进行高级代码搜索,支持精确的查询语法、正则表达式、多行搜索等功能,使得查找代码片段、函数定义、类结构或特定用法示例变得更加便捷。GitHub Code Search 不仅能提高代码查找的效率,还能帮助开发者更好地理解代码库的结构和依赖关系,对于大型项目的维护和协作尤为有用。通过这项功能,开发者可以更轻松地探索开源项目,获取灵感并加速开发过程。
以上这些功能几乎都有免费额度可以使用,基本上日常开发够用了。
Github Next
GitHub Next 的目标是推动开发工具的界限,不断提升开发效率和代码质量。通过与社区的互动和反馈,GitHub Next 能够识别出有潜力的功能,并将其逐步集成到 GitHub 的主平台中。这种前瞻性的探索不仅为开发者带来了新的可能性,也促进了更智能、更高效的开发环境的建立。
Github Next 中有很多有意思的项目在进行中,感兴趣的小伙伴可以申请部分工具的早期测试申请。
Github 生态
基于 Github 生态,可以做很多事情,很多 SaaS 服务可以与 Github 集成,降低开发复杂度,提升开发体验和效率。例如:
- AWS/Azure/Google Cloud:通过 Actions 一键部署到云服务器、Kubernetes 或 Serverless。
- Vercel/Netlify:前端项目自动构建与发布。
- Cloudflare:全球最流行的 CDN,现在还出了对象存储和 Cloudflare pages,将其与 Github 关联后,可以将自己的网站部署到 Cloudflare,借助其全球 CDN 将内容分发到全球。
- Railway:使用 Github 集成后,可以部署后端代码,包括数据库,中间件等等,支持多种后端框架,支持绑定自定义域名,支持自动申请 https 证书。
Github 写作
在 Github 上写作可以说是相当简单了。只要有一个 Github 账号,并且创建一个仓库,新建一个 md 文件,就可以开始创作了。我们提交的内容是 markdown 文本,浏览器会自动将其渲染成 html,然后在浏览器上显示出来,并且还能提供版本管理功能,不会丢失提交。
如果觉得比较麻烦或者 md 文件不好管理,可以使用静态博客生成器。例如 hexo,它可以将 md 文件自动渲染成 html 文件,只需要执行指令,就可以借助 Github pages 将其部署成一个静态网站。整个过程中不用使用任何服务器资源,也不用手动部署,配合 Github Actions 整个过程都是全自动的,我们需要做的只是新建一篇文章,commit 后文章就会被自动发布,我现在在写的这篇文章就是这么来的。如果想要自定义域名,Github pages 也是支持的,并且自动给域名申请 https 证书,全程免费全自动,维护成本几乎为 0。
Github 学习
Github 上有超多的开源项目,但并不是每个开源项目都是软件源代码,也有很多开源项目是教程类的项目,如果想要在 Github 上找一些学习教程,其实是相当简单的。
以 Python 为例,比较有代表性的教程就是它,截止到目前已经收获了 235k srar,资料的质量还是相当高的。还有 Java,比较受欢迎的是这个,截止到目前也有 148k star 了,质量也很高。
文章来源: https://study.disign.me/article/202509/11.github-all-service.md
发布时间: 2025-02-25
作者: 技术书栈编辑