GitHub 协作与管理
认证与仓库准备
gh · 在命令行无缝使用 GitHub
一些子命令(例如
config)有自己的使用文档。 更多信息:https://cli.github.com/manual/gh。
- 克隆一个 GitHub 仓库到本地:
参见 gh repo。
- 创建一个新 issue:
参见 gh issue create。
- 查看并筛选当前仓库中未解决的 issue:
bash
gh issue {{[ls|list]}}- 在默认浏览器中查看指定 issue:
bash
gh issue view {{[-w|--web]}} {{issue_号|url}}- 创建一个拉取请求:
参见 gh pr create。
- 在默认浏览器中查看拉取请求:
bash
gh pr view {{[-w|--web]}} {{pr_号|url|分支}}- 在本地检出指定的拉取请求:
参见 gh pr。
- 查看当前仓库中拉取请求的状态:
参见 gh pr。
gh auth · 进行 GitHub 主机的身份验证
- 通过交互式提示进行登录:
bash
gh auth login- 使用来自
stdin的令牌进行登录(在 https://github.com/settings/tokens 创建):
bash
echo {{你的令牌}} | gh auth login --with-token- 检查当前登录状态:
bash
gh auth status- 登出当前账户:
bash
gh auth logout- 登录指定的 GitHub 企业版服务器:
bash
gh auth login {{[-h|--hostname]}} {{github.example.com}}- 刷新身份验证凭据,并恢复为默认的最小权限范围(移除之前额外申请的权限):
bash
gh auth refresh --reset-scopes- 扩展当前权限范围:
bash
gh auth refresh {{[-s|--scopes]}} {{repo,admin:repo_hook,admin:org,admin:public_key,admin:org_hook,...}}gh repo · 在命令行上操作 GitHub 仓库
- 创建一个新的仓库(如果没有设置仓库名称,默认将为当前目录的名称):
bash
gh repo create {{名称}}- 克隆一个仓库:
bash
gh repo clone {{拥有者}}/{{仓库}}- 复刻并克隆一个仓库:
bash
gh repo fork {{拥有者}}/{{仓库}} --clone- 在默认的网络浏览器中查看一个仓库:
bash
gh repo view {{仓库}} --web- 列出特定用户或组织拥有的仓库(如果未设置拥有者,默认拥有者将是当前登录用户):
bash
gh repo list {{拥有者}}- 仅列出非派生的仓库,并限制列出的仓库数量(默认:30):
bash
gh repo list {{拥有者}} --source -L {{限制数量}}- 列出具有特定主要编程语言的仓库:
bash
gh repo list {{拥有者}} --language {{语言名称}}问题与任务跟踪
gh issue · 管理 GitHub issue
- 显示指定的 issue:
bash
gh issue view {{issue_号}}- 在默认网页浏览器中查看指定的 issue:
bash
gh issue view {{issue_号}} {{[-w|--web]}}- 在默认网页浏览器中创建一个新 issue:
参见 gh issue create。
- 列出最近 10 个带有 "bug" 标签的 issue:
bash
gh issue {{[ls|list]}} {{[-L|--limit]}} 10 {{[-l|--label]}} "bug"- 列出由指定用户创建的已关闭的 issue:
bash
gh issue {{[ls|list]}} {{[-s|--state]}} closed {{[-A|--author]}} {{用户名}}- 在指定仓库中,显示与当前用户相关的 issue 的状态:
bash
gh issue status {{[-R|--repo]}} {{拥有者}}/{{仓库}}- 重新打开指定的 issue:
bash
gh issue reopen {{issue_号}}gh issue create · 创建 GitHub 仓库中的 issue
- 以交互式方式在当前仓库中创建一个新 issue:
bash
gh issue {{[new|create]}}- 以交互式方式创建一个带有 "bug" 标签的新 issue:
bash
gh issue {{[new|create]}} {{[-l|--label]}} "bug"- 以交互式方式创建一个新 issue 并分配给指定的用户:
bash
gh issue {{[new|create]}} {{[-a|--assignee]}} {{用户1,用户2,...}}- 创建一个具有标题和描述的新 issue,并分配给当前用户:
bash
gh issue {{[new|create]}} {{[-t|--title]}} "{{标题}}" {{[-b|--body]}} "{{描述}}" {{[-a|--assignee]}} "@me"- 以交互式方式创建一个新 issue,并从文件中读取其描述正文:
bash
gh issue {{[new|create]}} {{[-F|--body-file]}} {{路径/到/文件}}- 在默认网页浏览器中创建一个新 issue:
bash
gh issue {{[new|create]}} {{[-w|--web]}}- 显示帮助:
bash
gh issue {{[new|create]}} {{[-h|--help]}}创建拉取请求
gh pr create · 管理 GitHub 拉取请求
- 以交互式方式创建一个拉取请求:
bash
gh pr {{[new|create]}}- 创建一个拉取请求,并根据当前分支的提交记录自动填充标题和描述:
bash
gh pr {{[new|create]}} {{[-f|--fill]}}- 创建一个草稿拉取请求:
bash
gh pr {{[new|create]}} {{[-d|--draft]}}- 创建一个拉取请求并指定目标分支、标题和描述:
bash
gh pr {{[new|create]}} {{[-B|--base]}} {{目标分支}} {{[-t|--title]}} "{{标题}}" {{[-b|--body]}} "{{描述}}"- 在默认网页浏览器中打开以创建拉取请求:
bash
gh pr {{[new|create]}} {{[-w|--web]}}检查与审阅拉取请求
gh pr · 管理 GitHub 拉取请求
一些子命令(例如
create)有自己的使用文档。 更多信息:https://cli.github.com/manual/gh_pr。
- 创建一个拉取请求:
参见 gh pr create。
- 在本地检出指定的拉取请求:
bash
gh {{[co|pr checkout]}} {{pr_号|url|分支}}- 查看当前分支上拉取请求所做的更改:
bash
gh pr diff- 批准当前分支关联的拉取请求:
bash
gh pr review {{[-a|--approve]}}- 以交互式方式合并当前分支关联的拉取请求:
参见 gh pr merge。
- 以交互式方式编辑拉取请求:
bash
gh pr edit- 修改拉取请求的目标分支:
bash
gh pr edit {{[-B|--base]}} {{分支名}}- 查看当前仓库中拉取请求的状态:
bash
gh pr statusgh pr checks · 查看 GitHub 拉取请求的 CI 状态检查结果
- 显示当前分支关联的拉取请求的状态检查结果:
bash
gh pr checks- 显示指定拉取请求的状态检查结果:
bash
gh pr checks {{pr_号}}- 实时监控状态检查,直到全部完成:
bash
gh pr checks {{pr_号}} --watch- 仅显示强制要求的检查结果:
bash
gh pr checks {{pr_号}} --requiredgh pr view · 查看 GitHub 拉取请求的详细信息
- 查看当前分支关联的拉取请求:
bash
gh pr view- 查看指定的拉取请求:
bash
gh pr view {{123}}- 在默认网页浏览器中打开拉取请求:
bash
gh pr view {{[-w|--web]}}- 在终端显示评论信息:
bash
gh pr view {{123}} {{[-c|--comments]}}合并拉取请求
gh pr merge · 合并 GitHub 拉取请求
- 以交互式方式合并当前分支关联的拉取请求:
bash
gh pr merge- 用合并提交方式合并指定拉取请求:
bash
gh pr merge {{pr_号}} {{[-m|--merge]}}- 压缩合并拉取请求,并删除该分支:
bash
gh pr merge {{pr_号}} {{[-sd|--squash --delete-branch]}}- 变基合并拉取请求:
bash
gh pr merge {{pr_号}} {{[-r|--rebase]}}- 开启自动合并(压缩合并):
bash
gh pr merge {{pr_号}} --auto {{[-s|--squash]}}- 使用管理员权限合并(如果允许):
bash
gh pr merge {{pr_号}} --admin工作流与运行记录
gh run · 查看、运行和监控最近的 GitHub Actions 工作流运行记录
- 以交互式方式选择运行记录以查看其任务信息:
bash
gh run view- 显示指定运行记录的信息:
bash
gh run view {{工作流运行编号}}- 显示指定任务的各个步骤的信息:
bash
gh run view {{[-j|--job]}} {{任务编号}}- 显示指定任务的日志:
bash
gh run view {{[-j|--job]}} {{任务编号}} --log- 检查指定的工作流运行,如果运行失败则退出并返回非零状态码:
bash
gh run view {{工作流运行编号}} --exit-status && {{echo "运行中或已通过"}}- 以交互式方式选择一个正在进行的运行记录,并等待其运行完毕:
bash
gh run watch- 显示某个运行记录的任务并等待其运行完毕:
bash
gh run watch {{工作流运行编号}}- 重新运行指定的工作流:
bash
gh run rerun {{工作流运行编号}}gh workflow · 列出、查看和运行 GitHub Actions 工作流
- 以交互式方式选择一个工作流以查看其最近的任务:
bash
gh workflow view- 在默认浏览器中查看指定的工作流:
bash
gh workflow view {{id|工作流名称|文件名.yml}} {{[-w|--web]}}- 显示指定工作流的 YAML 定义:
bash
gh workflow view {{id|工作流名称|文件名.yml}} {{[-y|--yaml]}}- 显示指定 Git 分支或标签下的 YAML 定义:
bash
gh workflow view {{id|工作流名称|文件名.yml}} {{[-r|--ref]}} {{分支|标签名}} {{[-y|--yaml]}}- 列出工作流文件(使用
--all参数包含已被禁用的工作流):
bash
gh workflow {{[ls|list]}}- 运行一个带参数的手动触发工作流:
bash
gh workflow run {{id|工作流名称|文件名.yml}} {{--raw-field 参数1=值1 --raw-field 参数2=值2 ...}}- 从
stdin读取 JSON 参数,并在指定的分支或标签下运行手动工作流:
bash
echo '{{{"参数1": "值1", "参数2": "值2", ...}}}' | gh workflow run {{id|工作流名称|文件名.yml}} {{[-r|--ref]}} {{分支|标签名}} --json- 启用或禁用指定的工作流:
bash
gh workflow {{enable|disable}} {{id|工作流名称|文件名.yml}}片段与其他协作工具
gh gist · 在命令行上使用 GitHub Gists
- 从一个以空格分隔的文件列表中创建一个新的 Gist:
bash
gh gist create {{路径/文件}}- 创建一个带有描述的新 Gist:
bash
gh gist create {{文件名}} --desc "{{描述}}"- 编辑一个 Gist:
bash
gh gist edit {{id_或_url}}- 列出当前登录用户所拥有的 Gist:
bash
gh gist list --limit {{int}}- 在默认浏览器中查看 Gist,且不渲染 Markdown:
bash
gh gist view {{id_或_url}} --web --raw示例整理自 tldr-pages,作者为 tldr-pages team and contributors,遵循 CC BY 4.0。
继续阅读
- Git完整实践与解答
- Git任务与配置
- Git任务与配置