玩转GitHub¶
1 引言¶
GitHub的主要功能是进行代码的版本管理与协作。我们在《一行代码都不写,教你使用GitHub》这篇文章中,详细地介绍了GitHub能做什么以及如何使用GitHub。
其实GitHub也可以很有趣,本文将从不一样的视角,聊聊GitHub有哪些好玩的功能。
2 Action¶
GitHub Action提供了一套自动化执行脚本命令的服务。我们团队使用GitHub Pages来建立我们的博客。当我们在GitHub上更新我们的文章时,很自然的,我们想让这一改动自动地更新到博客当中。
如果没有GitHub Action这一自动化部署服务,我们可能需要每次手动地跑一些脚本将文章部署到博客上面。
现在,我们只需要在这一路径下(BulletTech/.github/workflows),创建ci.yml文件,将我们需要的命令写入其中。当有改动push到main分支时,GitHub Action就可以自动地帮我们跑设定好的脚本。
name: ci
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.x
- run: python ./docs/Scripts/Update_reading_time.py
- run: pip install mkdocs-material
- run: pip install --upgrade mkdocs-material
- run: pip install mkdocs-redirects
- run: pip install mkdocs-minify-plugin
- run: pip install mkdocs-macros-plugin
- run: pip install mkdocs-git-revision-date-localized-plugin
- run: git pull
- run: mkdocs gh-deploy --force
除了自己创建的工作流(workflow),GitHub还有很丰富的workflow社区,你可以选择不同的workflow,实现你的各种需求。
3 Projects¶
GitHub自带了项目管理的功能。
首先,我们点击项目看板(Projects),可以看到我们创建的项目。
点击项目,可以看到看板状的结构,有To do,In progress,Done等多个Column,当然也可以自己新建Column。
我们可以通过点击Column中的加号创建note。在图示中,我们可以看到在To do这一Column中的note是一个issue。那么,这是怎么实现的呢?
我们在创建issue过程中,可以注意到右边栏有Projects这一项。如果我们选择对应的Column,就可以把这个issue作为card插入这一Column。
我们也可以在看板中,通过add card将issue直接加入。
有了项目看板功能,我们可以更方便地进行项目管理与团队协作。
4 Wiki¶
GitHub的Wiki允许我们以markdown文本的方式构建属于这个repo的Wiki,让用户不止于README文档,更好地了解repo内容。优秀的示例如Pytorch的Wiki
5 Security¶
GitHub Security提供了关于代码安全方面的工具。
如我们可以通过创建Security.md向用户提示代码中的某些潜在问题,优秀的案例可以参考Tensorflow Repo中的Security文件。
我们还可以通过GitHub Action设定代码安全扫描的工作流。它可以自动地扫描分支和pull request中代码的语法错误、不安全的输入(显示的用户输入)等等。
6 Insights¶
GitHub的Insights以直观的图表的形式给出了repo整体的以及代码贡献者个人的commit,pull request等行为的信息。
7 小结¶
GitHub也可以很有趣,除了提供的常规功能之外,GitHub提供了很多有趣、实用的功能。它们不仅极大地提高了生产力,也丰富了GitHub的内容。