快捷键

Github快捷键官方文档

  • S, 快速搜索
  • T, 搜索当前项目文件
  • L, 跳转文件行号
  • B, 查看文件历史改动记录
  • ., 代码库将会在vscode online中打开,方便代码阅读
  • Ctrl + K, 命令面板
    github.dev

高级搜索

仓库搜索限定符

Github上搜索仓库官方说明
go in:name star:>=1000 pushed:>2022-06-01 language:go
jenkins in:readme

in 限定符范围:

  • in:name, jquery in:name 匹配名称中带有“jquery”的存储库。
  • in:description, jquery in:name,description 匹配名称或说明中带有“jquery”的存储库。
  • in:topics, jquery in:topics 将带“jquery”标签的存储库匹配为主题。
  • in:readme, jquery in:readme 匹配自述文件中提及“jquery”的存储库。
  • repo:owner/name, repo:octocat/hello-world 匹配特定的存储库名称。

followers 关注度限定符

  • followers:>=n, node followers:>=10000 匹配有 10,000 名或更多关注者提及“node”一词的存储库。
  • followers:n..n, styleguide linter followers:1..10 匹配有 1 至 10 名关注者提及“styleguide linter”一词的存储库。

stars 按照标星限定符

  • stars:n, stars:500 匹配正好有 500 个星标的存储库。
  • stars:n..n size:<n, stars:10..20 size:<1000 匹配有 10 到 20 个星标、小于 1000 KB 的存储库。
  • stars:>=n fork:true language:LANGUAGE, stars:>=500 fork:true language:php 匹配至少有 500 个星标(包括用 PHP 编写的分支星标)的存储库。

created, pushed 时间限定符

  • created:<YYYY-MM-DD, webos created:<2011-01-01 匹配具有 2011 年之前创建的“webos”一词的存储库。
  • pushed:>YYYY-MM-DD, css pushed:>2013-02-01 匹配具有在 2013 年 1 月之后推送到其中的“css”一词的存储库。
  • pushed:>=YYYY-MM-DD fork:only, case pushed:>=2013-03-06 fork:only 匹配在 2013 年 3 月 6 日或之后将“case”一词推送到其中的存储库(即分支)。

language 语言限定符

  • language:LANGUAGE, rails language:javascript 匹配具有以 JavaScript 编写的“rails”一词的存储库。

topics 主题限定符

  • topic:TOPIC, topic:jekyll 匹配按“Jekyll”主题分类的存储库。

代码搜索语法

GitHub 代码搜索语法

一个没有限定符的裸词将与文件的内容或文件的路径匹配

  • http-push
    匹配文件名或文本内容中带有http-push的文件

输入多个用空格分隔的术语,以搜索满足这两个字词的文档

  • sparse index
    匹配文件或内容中包含有sparse和index两个词的文件,不管顺序
  • /sparse.*index/
    使用/…/支持正则表达式,如果正则表达式中/需要用/表示。

完全匹配

  • “name = "tensorflow"“
    完全匹配name=”tensorfow”的文本

运算符 AND/OR/NOT

  • “fatal error” NOT path:testing
    文件或者内容中包含fatal error,同时排除__testing__目录中的文件
  • (language:ruby OR language:python) AND NOT path:”/tests/“
    语言为ruby或者python,并且排除/tests/目录中的文件

path 路径限定符

  • path:src/.js
    匹配src/
    .js 路径下的文件,以上为src目录下的文件,如果需要包含其子目录,写法为 path:src/**/*.js
  • path:*.a?c
    ?全局字符,匹配任意字符:file.aac, file.abc

codespaces

每个月可免费使用15GB,120小时。

codespaces官方文档
在项目的Code按键中选择codespaces,并创建codespace,将会打开vscode界面,在该codespace中不仅可以查看代码,还可以进行开发、调试,运行项目。

codespace

github action

action官方文档
action市场
awesom actions

Github Action 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道,而且可以免费使用。
GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行工作流程,也可以在自己托管的机器运行。

在之前文章Hexo + Butterfly + Github Page + Github Action 配置自己的个人网站中就使用了Github Action 来实现hexo自动发布。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
name: Deploy Blog site
run-name: ${{ github.actor }} is deploy blog site 🚀
on: [push]
jobs:
Deploy-Actions:
runs-on: ubuntu-latest
container:
image: xhuaustc/hexo:latest
env:
TOKEN: ${{ secrets.GIT_TOKEN }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Deploy blog
run: |
npm install --force
hexo deploy

workflow中配置的说明:

工作流语法

workflow在具体执行中,可以全用 steps.uses 来调用Action,也可以使用 steps.run 来运行指定的 shell 命令,其中 shell 默认为运行器操作系统的默认shell,它还可以为 cmd, python, sh等。可参考:jobs..steps[*].shell

Github Action 基本概念

  • Workflow: 工作流,一个可配置的自动化过程,它将运行一个或多个作业。
  • on: 事件, 存储库中触发工作流程运行的特定活动。
  • job: 任务,工作流中在同一运行器上执行的一组步骤。
  • step: 步骤, 要么是一个将要执行的 shell 脚本,要么是一个将要运行的动作。
  • action: 动作,用于 GitHub Actions 平台的自定义应用程序,它执行复杂但经常重复的任务。

Github Action的配置文件,会以yaml的形式定义,并保存在项目的.github/workflows/目录中。github将会自动检查该目录下的文件,触发相关的任务。

创建自定义Action

Action动作是工作流中具体执行的最小单元。
一个Action单元,包括:name, description, inputs, outputs, runs
其中runs为具体的执行操作。
GitHub Actions 的元数据语法

创建 Docker 容器Action:使用 Docker 容器Action作为执行环境。

创建组合Action:使用steps进行组合Action

创建 JavaScript Action:使用Javascript 作为Action执行环境

查找和自定义Action

Action除了自己编写外,还可以包含社区创建的Action,也可以直接在应用程序的仓库中创建您自己的Action。

  1. 在Marketplace市场中查找并使用Action
    打开仓库中的具体workflow, 并点击编辑工作流按钮。
    编辑

在编辑框的右侧,将会出现Marketplace,在其中搜索需要的action,并复制到workflow.yaml中。
Marketplace

  1. 引入本仓库中的Action
    Action可以在工作流文件同一仓库中定义,在工作流文件中通过 {owner}/{repo}@{ref} 或 ./path/to/dir 语法引用操作。
    示例仓库文件结构:

    1
    2
    3
    4
    5
    6
    7
    |-- hello-world (repository)
    | |__ .github
    | └── workflows
    | └── my-first-workflow.yml
    | └── actions
    | |__ hello-world-action
    | └── action.yml

    示例工作流程文件:

    1
    2
    3
    4
    5
    6
    7
    8
    jobs:
    build:
    runs-on: ubuntu-latest
    steps:
    # This step checks out a copy of your repository.
    - uses: actions/checkout@v3
    # This step references the directory that contains the action.
    - uses: ./.github/actions/hello-world-action

    action.yml 文件用于提供操作的元数据。
    如何将自己的Action发布到MarketPlace

  2. 引入外部仓库中的Action

如果操作在与工作流文件不同的仓库中定义,可在工作流文件中通过 {owner}/{repo}@{ref} 语法引用该操作。该操作必须存储在公共仓库中。
示例工作流文件:

1
2
3
4
5
jobs:
my_first_job:
steps:
- name: My first step
uses: actions/setup-node@v3
  1. 引入Docker镜像中的Action
    如果Action在 Docker Hub 上发布的 Docker 容器镜像中定义,必须在工作流文件中通过 docker://{image}:{tag} 语法引用该操作。
    示例工作流文件:
    1
    2
    3
    4
    5
    jobs:
    my_first_job:
    steps:
    - name: My first step
    uses: docker://alpine:3.8
    如何构建Docker镜像类Action,请参考:创建 Docker 容器Action

示例构建go项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
name: Upload Go test results

on: [push]

jobs:
build:

runs-on: ubuntu-latest
strategy:
matrix:
go-version: [ '1.14', '1.15', '1.16.x' ]

steps:
- uses: actions/checkout@v3
- name: Setup Go
uses: actions/setup-go@v4
with:
go-version: ${{ matrix.go-version }}
- name: Install dependencies
run: go get .
- name: Test with Go
run: go test -json > TestResults-${{ matrix.go-version }}.json
- name: Upload Go test results
uses: actions/upload-artifact@v3
with:
name: Go-results-${{ matrix.go-version }}
path: TestResults-${{ matrix.go-version }}.json

项目探索 Explore

Explore界面中,可以通过邮件订阅感兴趣的项目

Github 趋势:https://github.com/trending

代码片段:https://gist.github.com

Github课堂:https://classroom.github.com

Git教程:https://try.github.io

Github项目榜单:https://hellogithub.com