善用GitHub

可交互文档
协作
语音编程
AI
Railway
Vercel
Cloudflare
SSO
开源项目
GitHub Profile
GitHub Packages
GitHub Projects
GitHub Actions
GitHub Copilot
GitHub Codespaces
GitHub Discussions
GitHub Pages
GitHub Markdown
GitHub Dev
GitHub Stars
GitHub Search
GitHub Next
生态
技术影响力
代码创作
文字创作
学习平台
GitHub

GitHub是微软旗下的一个在线软件源代码托管服务平台,也是一个拥有八千多万开发者用户的社区。很多开发者应该对GitHub有一定的了解,但非技术人员大多可能并不会去使用它。本文更多是想给非技术人员来介绍这个平台,看完这篇文章,希望能让更多人在上面来学习、创作与展示自己的作品。

GitHub是好的学习平台

GitHub拥有非常多的开源项目,这些开源项目中的一些已经成为了IT行业的软件基石,比如Linux内核项目。

如果你想学一门软件开发的技术,比如学会用Python做一些数据分析,那GitHub就是这方面最好的一个学习平台。为什么这么说?

学习首先是需要找一个好的教程,在GitHub上最不缺的就是教程类的项目。以Python为例,通过在GitHub上搜索,可以很容易找到这个Awesome Python的项目,它收集了很多Python相关的教程、项目、库等等,你可以在这个项目中找到你想要的学习资料。而且因为它是一个Star数近十五万的明星项目,被很多开发者认可,所以上面推荐的资料质量也是非常高的。

当然GitHub并不完全是英文的,中文资料也很多,不过我还是推荐尽可能使用英文的资料,如果你要走技术之路,英文是必须的。

找到教程学习后,接下来就是去开发一个真正的项目了。按正常的流程,我们需要在我们的电脑上配置复杂的软件开发环境,就这一步已经让很多人望而却步了。但是在GitHub上,你可以直接在网页上编辑代码,然后提交到GitHub上,这样你就可以在任何一台电脑上开发你的项目了。这个功能叫做GitHub Codespaces

比如下面就是我在开发的一个开源项目,其是一个基于Python的项目,我可以在网页上直接编辑代码,然后提交到GitHub上。

在上图红框部分可以创建一个免费在线的开发环境,打开后就是一个网页版的VSCode。也就是说GitHub给了你一个云端开发环境(一个拥有Root用户权限的Linux系统,可以配置安装任何软件!这个开发环境可以一直存储在云端,在任何时候打开就可以继续开发,保存在上面的文件也不会被删除。

有时候当你只想阅读其他人的代码时,在GitHub网页上按下.键就会自动打开一个在线VSCode的开发环境,相比网页可以更方面的阅读与搜索代码。

GitHub还提供了强大的代码搜索功能,除了在GitHub.com上搜索外,还可以在GitHub code search上搜索,这个搜索引擎可以搜索GitHub上的所有的公开仓库代码。我觉得它提供了类似sourcegraph的体验,包括更好的代码符号跳转功能。

在一个浏览器内搞定代码的搜索、阅读与开发功能,我觉得这是非常震撼的,起码在十几年前是不可能的。

如果你并不想写代码,只想写点文字,GitHub也能给你带来非常好的写作体验。

GitHub是好的写作平台

基于Markdown的写作一直是我推崇的,早在十年前,我在Wordpress上写作,Wordpress提供了最简单的网站搭建体验,以至于全球有超过四成的网站都是用Wordpress搭建的,包括个人博客。但Wordpress的搭建还是太麻烦了,虽然现在很多国内的云服务商都提供了一键搭建Wordpress的功能,但还是有很多限制,比如不是免费的,需要备案,需要维护服务器等。

GitHub上写作非常简单,只需要一个GitHub账号,然后在GitHub上创建一个仓库,然后在仓库里创建一个Markdown文件,就可以开始写作了。写作的内容就是Markdown格式的文本,GitHub会自动将Markdown转换为HTML,然后在浏览器上显示出来。

除了这种方式,还可以使用Cloudflare Pages,它可以将GitHub仓库里的内容自动部署到CloudflareCDN上,这样就可以使用自定义域名了。

如果你想要更好的写作体验,还可以使用这个vuepress-theme-hope的开源项目,它提供了非常强大的定制能力,使用方式却很简单,比如我用它在GitHub上搭建了一个文档网站:free4chat开发手记。在每个页面的底部都有一个在GitHub上编辑此页的按钮,点击后就可以直接在GitHub上修改这个页面,修改后提交,GitHub会自动重新构建网站,然后你就可以在网站上看到修改后的内容了。

由于GitHub的仓库会自动保存每次修订的历史记录,如果出错也可以回退到之前的版本,再也不担心数据丢失的问题了。

当然这个博客也是在GitHub上搭建的,你可以在这个仓库查看到它的原始文件:bmpi-dev/bmpi.dev

如果想给网站添加评论功能,可以使用giscus,它会自动将评论保存到GitHub仓库的Discussions里,这样就不用担心评论数据丢失的问题了。比如本博客的评论数据都在这里:bmpi-dev/bmpi.dev/discussions

GitHub是好的开发平台

GitHub最好的开发平台。从上面的内容相信你可以看出来,GitHub围绕软件的搜索、阅读与开发体验方面做了很多改进。甚至用一个浏览器就可以完成软件产品的开发、测试与部署。本文不会详细的介绍GitHub的全部功能,但以下这些功能是我感觉非常值得尝试的:

  • Jupyter Notebook:对机器学习有很好的支持,比如直接在网页执行Notebook内的代码并将结果渲染出来。
  • GitHub Codespaces:提供一个在线的云端IDE,可以在浏览器里直接编辑代码,然后在云端编译、运行、调试代码,非常方便。甚至还提供了GPU的实例,可以训练机器学习模型。
  • GitHub Copilot:提供一个在线的AI代码自动补全功能,可以根据上下文对你的代码自动补全,甚至包括写博客(这篇文章的一部分就是这个AI小助手自动撰写的,你能看出来吗
  • GitHub Actions:提供一个Pipeline as CodeCI/CD服务。比如可以实现,当博客文章更新时,自动发送通知给订阅者,我的博客就实现了类似的功能,具体的实现可以看这个文件:.github/workflows/gh-pages.yml
  • GitHub Packages:提供类似Docker Hub的软件包管理功能。

最重要的是,这些功能很多都提供了免费的额度,足够日常使用了,你要做的就是去创作,利用技术杠杆去实现自己的想法。

利用GitHub打造个人技术影响力

打造个人技术影响力,可能是很多开发者无偿在GitHub上创造各种开源项目的一个主要原因。而技术影响力又可以让开发者能获得更多的机会,比如获得更多的工作机会,影响更多的人等。

GitHub上你可以找到很多很厉害的人,比如前端大佬antfuElixir的作者José Valim,通过关注这些人的动态,了解最新的技术趋势,不断提高自己的技术能力。

GitHub也是一个很好的技术展示平台,你可以通过创建自己的GitHub Profile来展示自己的技术栈,比如我的GitHub Profile。也可以用这个工具GitHub Profile README Generator来生成自己的GitHub Profile

基于GitHub的生态

GitHub的生态系统非常庞大,有很多SaaS服务可以与其集成,从而提供完美的开发体验,比如:

  • SSO:很多技术网站都提供了GitHubSSO集成,尤其是和开发者SaaS服务相关的网站,如果要使用这些服务,则必须要有一个GitHub账号。
  • Cloudflare:全球最流行的CDN,和GitHub集成后,Cloudflare Pages可以实现自动部署,当代码pushGitHub后,Cloudflare会自动将网站发布到Cloudflare的全球网络节点中。
  • Vercel:和Cloudflare Pages一样,集成GitHub后,可以自动部署网站到VercelCDN网络中。我的一些小工具就是部署到Vercel上的。
  • Railway:提供了后端服务包括数据库的托管,集成GitHub后,可以自动部署应用到Railway的服务器上。

这些SaaS服务同样都提供了一些免费额度,轻度使用,可以免费做很多小项目。

GitHub Next

GitHub Next正在探索一些能影响软件开发未来的方向,目前有几个方向挺有意思的:

  • AI:或者说深度学习模型,正在逐渐的改变世界,比如GitHub Copilot正是基于深度学习模型来实现代码自动补全的功能。未来基于GitHub Copilot的代码重构、写自动化测试、与开发者结对编程也不是不可能的事情,当然让AI帮我们写文章,或者合写文章也是一件自然而然的事情。
  • 语音编程:如果能通过自然语言与GitHub Copilot沟通,那编程将会变成搭积木一样的简单,一些基本的功能就可以通过语音来实现,而不需要写代码。这事想想就觉得不可思议,甚至有种托尼·斯塔克与贾维斯对话去制造钢铁侠战甲的感觉。
  • 协作:由于疫情的出现,远程工作正变得越来越流行(或者说需要,远程结对编写代码目前还没有什么比较好的方式,解决多人如何在同一个代码库实时协作是个有意思的领域。
  • 可交互文档:虽然GitHub现在对Markdown的支持已经非常好了,但这种支持还仅限静态的,如何让文档变得可交互,让文档更有表达性,也是一个值得进一步挖掘的方向。

虽然我注册GitHub有很多年了,但逐渐投入越来越多的时间在上面还是在这几年。尤其是这两年来,我愈发觉得GitHub正在逐渐改变软件开发的常规模式,尤其是GitHub Copilot的出现,以及一条龙式的开发体验,甚至以后从代码的设计、开发、测试到部署都可以在GitHub网页上完成,这些都是我之前想象不到的。

希望这篇文章能让读者对GitHub有个全新的了解,如果你还没有注册GitHub,那就赶紧去注册一个吧。

更新时间: 28个月前 版本: 552287ed2