Github使用技巧
快捷键
- S, 快速搜索
- T, 搜索当前项目文件
- L, 跳转文件行号
- B, 查看文件历史改动记录
- ., 代码库将会在vscode online中打开,方便代码阅读
- Ctrl + K, 命令面板
仓库搜索限定符
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”主题分类的存储库。
代码搜索语法
一个没有限定符的裸词将与文件的内容或文件的路径匹配
- 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中不仅可以查看代码,还可以进行开发、调试,运行项目。
github action
action官方文档
action市场
awesom actions
Github Action 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道,而且可以免费使用。
GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行工作流程,也可以在自己托管的机器运行。
在之前文章Hexo + Butterfly + Github Page + Github Action 配置自己的个人网站中就使用了Github Action 来实现hexo自动发布。
示例:
1 | name: Deploy Blog site |
workflow中配置的说明:
workflow在具体执行中,可以全用 steps.uses 来调用Action,也可以使用 steps.run 来运行指定的 shell 命令,其中 shell 默认为运行器操作系统的默认shell,它还可以为 cmd, python, sh等。可参考:jobs.
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。
- 在Marketplace市场中查找并使用Action
打开仓库中的具体workflow, 并点击编辑工作流按钮。
在编辑框的右侧,将会出现Marketplace,在其中搜索需要的action,并复制到workflow.yaml中。
引入本仓库中的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
8jobs:
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-actionaction.yml 文件用于提供操作的元数据。
如何将自己的Action发布到MarketPlace引入外部仓库中的Action
如果操作在与工作流文件不同的仓库中定义,可在工作流文件中通过 {owner}/{repo}@{ref} 语法引用该操作。该操作必须存储在公共仓库中。
示例工作流文件:
1 | jobs: |
- 引入Docker镜像中的Action
如果Action在 Docker Hub 上发布的 Docker 容器镜像中定义,必须在工作流文件中通过 docker://{image}:{tag} 语法引用该操作。
示例工作流文件:如何构建Docker镜像类Action,请参考:创建 Docker 容器Action1
2
3
4
5jobs:
my_first_job:
steps:
- name: My first step
uses: docker://alpine:3.8
示例构建go项目
1 | name: Upload Go test results |
项目探索 Explore
Explore界面中,可以通过邮件订阅感兴趣的项目
Links
Github 趋势:https://github.com/trending
Github课堂:https://classroom.github.com
Git教程:https://try.github.io
Github项目榜单:https://hellogithub.com