GitHub CLI (gh) 完整中文文档与使用指南
创建人:chjs
创建时间:2026.04.02
最近使用了github cli,遂使用大模型将其文档翻译整理了一下。
一、快速入门与安装配置
GitHub CLI (简称 gh) 是 GitHub 官方提供的命令行工具,它允许您直接在终端中与 GitHub 交互,管理仓库、议题、拉取请求等工作,从而显著提升工作效率,减少在浏览器和终端之间切换的上下文成本。本章将指导您完成从安装到首次登录的完整设置流程。
🔧 安装 GitHub CLI
GitHub CLI 支持所有主流操作系统。请根据您的系统选择下方推荐的官方安装方法。
重要:以下所有安装方法均来源于官方文档,请根据您的操作系统参考执行。
| 操作系统 | 推荐安装方法及命令 | 补充说明 |
|---|---|---|
| Windows | 使用 WinGet (推荐) winget install --id GitHub.cli | 从官方发布页下载 .msi 安装包双击运行亦可。 |
| macOS | 使用 Homebrew (推荐) brew install gh | 也可通过 MacPorts、Conda 或下载 .pkg 安装包安装。 |
| Linux (Ubuntu/Debian) | 使用官方 APT 仓库 ```bash curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main” |
| Linux (其他发行版) | 使用系统包管理器 Fedora: sudo dnf install gh CentOS/RHEL (需EPEL): sudo yum install gh |
安装完成后,在终端中运行以下命令验证安装是否成功。如果安装正确,将显示 GitHub CLI 的版本号。
gh --version
🔐 身份认证与首次登录 (gh auth)
安装 gh 后,必须进行身份验证才能使用其完整的远程操作功能。这是通过 gh auth login 命令完成的交互式流程。
登录流程详细步骤
- 启动登录:在终端运行以下命令,进入交互式引导流程。
- gh auth login
- 选择 GitHub 主机:根据提示选择要登录的平台。
- 对于公开的 GitHub.com,选择 GitHub.com。
- 如果您使用 GitHub Enterprise Server,选择 Other,然后输入企业实例的主机名(例如 octocorp.ghe.com)。
- 选择 Git 协议(关键步骤):
- HTTPS (推荐):这是更简单的选项。如果您同意,GitHub CLI 可以自动存储您的 Git 凭据。这意味着之后使用 git push、git pull 等原生 Git 命令时,无需单独设置凭据管理器或 SSH 密钥。
- SSH:如果您已配置 SSH 密钥并偏好使用它,可以选择此选项。
- 选择认证方式:
- Login with a web browser (推荐):这是最安全便捷的方式。CLI 会生成一个一次性代码。
- 终端显示一次性代码(如 0XXC-09XC)并提示按 Enter 键。
- 按 Enter 键,您的默认浏览器将自动打开 GitHub 的设备授权页面。
- 在浏览器中输入终端显示的一次性代码。
- 跟随浏览器提示完成对“GitHub CLI”应用的授权。
- Paste an authentication token:如果您希望使用个人访问令牌 (PAT),可以选择此方式。对应的非交互式命令是 gh auth login --with-token 。
- Login with a web browser (推荐):这是最安全便捷的方式。CLI 会生成一个一次性代码。
- 登录成功:浏览器授权成功后,返回终端,您将看到如下确认信息:
- ✓ Authentication complete.
- ✓ Configured git protocol
- ✓ Logged in as <您的用户名>
验证与管理登录状态
- 要随时检查当前认证状态,请运行:
- gh auth status
- 该命令会显示您当前登录的主机和账户。
- 如果您在同一主机(如 GitHub.com)上有多个账户,可以使用 gh auth switch 命令在它们之间切换。
📌 重要注意事项
- 权限范围:当您首次使用某些需要额外权限的命令(例如 gh codespace 相关命令)时,可能会被提示为您的认证令牌添加额外的权限范围(scopes),只需跟随屏幕指示操作即可。
- 安全建议:对于自动化场景(如 CI/CD),建议使用细粒度的个人访问令牌进行认证。在个人账户中,启用双因素认证 (2FA) 是重要的安全最佳实践。
完成以上安装验证与身份认证步骤后,您的 GitHub CLI 就已准备就绪。您可以立即开始使用 gh repo clone、gh issue create、gh pr create 等核心命令来高效管理工作流。接下来的章节将详细介绍这些功能的用法。
二、仓库管理(gh repo)
gh repo 是 GitHub CLI 最核心的子命令集之一,它让你无需离开终端即可完成仓库的完整生命周期管理。本章将详细介绍其所有子命令,助你将前序步骤的认证成果直接应用于实战。
1. gh repo clone - 🧬 智能克隆
此命令在原生 git clone 基础上进行了智能化封装,能自动处理身份认证和协议选择,且克隆 Fork 仓库时会自动添加上游(upstream)远程引用,极大简化了流程。
基本语法:
gh repo clone [/] [] [flags]
常用示例:
- 基础克隆:克隆指定仓库到以仓库名命名的目录。
- gh repo clone cli/cli
- 指定目标目录:克隆到自定义的本地目录。
- gh repo clone cli/cli my-cli-directory
- 高级 Git 参数:通过 -- 分隔符,可以向底层的 git clone 传递任意参数,实现精细控制。
-
浅克隆,仅获取最近一次提交历史
gh repo clone owner/repo -- --depth=1仅克隆特定分支
gh repo clone SAP/fundamental-tools sample -- --branch sample --single-branch
2. gh repo create - 🆕 多场景创建
这是功能最为强大的命令,完美覆盖了从零创建、基于模板生成和一键推送本地项目三大核心场景。
基本语法:
gh repo create [] [flags]
核心场景与示例:
场景一:从零开始创建(交互式/非交互式)
- 交互式引导:直接运行命令,跟随提示逐步设置。
- gh repo create
- 命令行一键创建:通过参数直接指定所有属性。
-
创建公共仓库,并附带描述
gh repo create my-project --public --description “我的项目描述”创建私有仓库,并立即克隆到本地
gh repo create my-project --private --clone
场景二:基于模板创建
快速使用已有仓库作为模板来初始化新项目。
gh repo create my-app --template owner/template-repo
场景三:推送现有本地项目(革命性功能)
此功能将传统的“网页创建 -> 添加远程 -> 首次推送”三步流程合并为一步,极大提升效率。
在已初始化的本地 Git 项目根目录执行
gh repo create my-project --source=. --public --push
常用创建选项:
- -d, --description :设置仓库描述。
- -g, --gitignore :指定 .gitignore 模板(如 Python, Node)。
- -l, --license :指定开源许可证(如 MIT, Apache-2.0)。
- --add-readme:自动生成 README 文件。
3. gh repo view - 👁️ 快速查看
用于在终端或浏览器中快速获取仓库信息。
常用示例:
- 终端概览:在命令行中查看仓库的详细信息摘要。
- gh repo view owner/repo
- 网页打开:在默认浏览器中打开该仓库的主页。
- gh repo view owner/repo --web
- 脚本友好输出:以 JSON 格式输出特定字段,便于后续用 jq 等工具处理。
- gh repo view --json name,description,stargazerCount,url
4. gh repo fork - 🍴 便捷分叉
轻松为任何公开仓库创建个人 Fork,是参与开源贡献的标准第一步。
常用示例:
- 创建 Fork:
- gh repo fork owner/repo
- 创建并克隆:一键完成 Fork 和本地克隆。
- gh repo fork owner/repo --clone
- 手动添加上游源(克隆后如需同步更新):
- git remote add upstream https://github.com/original-owner/repo.git
5. gh repo list - 📜 清单列表
列出你个人账户或所属组织下的所有仓库。
常用示例:
列出你个人账户下的仓库
gh repo list
列出指定组织的仓库
gh repo list org-name
使用JSON输出,并限制数量、筛选字段
gh repo list --limit 10 --json name,isPrivate,pushedAt
6. gh repo edit - ✏️ 编辑属性
修改仓库的元数据信息,如描述、主页 URL 等。
通过掌握 gh repo 这一系列命令,你几乎可以完全在终端内完成仓库的克隆、创建、查看、分叉和列表管理,将 GitHub 的仓库操作无缝集成到你的本地工作流中,显著提升效率。对于任何子命令,随时可以使用 gh repo --help 获取最详尽的参数说明。
三、议题管理(gh issue)
继掌握了仓库的创建、克隆与查看后,下一个核心协作环节便是议题(Issue) 的管理。gh issue 命令集允许你在终端中完成议题的创建、查看、列表、评论与状态跟踪,将问题追踪和讨论完全融入你的命令行工作流。
1. 创建议题:gh issue create
直接在当前仓库或指定仓库中创建新的议题,支持丰富的元数据设置。
- 基本语法:
- gh issue create [flags]
- 关键参数与示例:
- 设置标题与正文:使用 -t 或 --title 设置标题,-b 或 --body 设置详细描述。
- gh issue create --title “Bug: 登录失败” --body “在输入用户名后,界面无响应。”
- 分配与分类:可以指定受理人、添加标签、关联至里程碑或项目。
- -a, --assignee : 分配受理人(可使用@me指代自己)。
- -l, --label : 添加标签(多个标签用逗号分隔)。
- -m, --milestone : 关联里程碑。
- --project : 添加到指定项目。
- gh issue create --title “文档改进” --body “需要更新 README.md” --assignee @me,monalisa --label “bug,help wanted” --project onboarding
- 交互式与网页创建:直接运行 gh issue create 会进入交互式引导;添加 --web 参数则会在浏览器中打开创建页面。
2. 查看与列表议题:gh issue list / gh issue view
快速浏览和筛选议题,或在终端/浏览器中查看详情。
- gh issue list - 列出并筛选议题
- 常用筛选参数:
| 参数 | 用途 | 示例 |
|---|---|---|
| -s, --state | 按状态筛选:open, closed, all | --state all |
| -a, --assignee | 按受理人筛选 | --assignee "n8ebel" |
| -l, --label | 按标签筛选 | --label "bug" |
| -A, --author | 按作者筛选 | --author monalisa |
| -L, --limit | 限制输出数量(默认30) | --limit 50 |
| -R, --repo | 对指定仓库操作 | --repo owner/repo |
-
- 输出控制:
- -w, --web:在浏览器中打开议题列表页。
- --json :以JSON格式输出,支持字段包括 number, title, state, author, labels, assignees 等,便于脚本处理。
- gh issue list --json number,title,assignees
- 输出控制:
- gh issue view - 查看特定议题详情
- 语法:gh issue view [flags]
- 示例:
-
在终端查看15号议题
gh issue view 15在浏览器中查看123号议题
gh issue view 123 --web以JSON格式输出详情
gh issue view 15 --json body,comments
3. 状态概览:gh issue status
快速查看与你相关的议题摘要,例如分配给你、由你创建或提及你的议题,帮你掌握待办事项。
gh issue status
4. 议题互动操作:评论、关闭与重开
对议题进行跟进和生命周期管理。
- gh issue comment - 添加评论
- gh issue comment --body “已在 v2.3.0 版本中确认此问题,正在添加重现步骤。”
- gh issue close - 关闭议题(可附带说明)
- gh issue close 15 --comment “已在提交 abc123 中修复。”
- gh issue reopen - 重新打开议题
- gh issue reopen
5. 高级用法:脚本集成与效率提升
将 gh issue 无缝集成到自动化脚本和个性化工作流中。
- 脚本自动化处理:结合 --json 输出和 jq 等命令行JSON处理工具,可以轻松实现议题数据的提取、过滤和批量操作。
-
获取所有开放议题的编号,并循环处理
gh issue list --state open --json number | jq ‘.[].number’ | while read num; do
echo “处理议题 #$num”此处可添加你的自动化逻辑,例如添加特定评论
done - 设置命令别名:通过 gh alias set 为高频操作创建快捷方式,大幅提升日常效率。
-
将“列出我所有开放议题”设置为别名
gh alias set myissues ‘issue list --assignee @me --state open’myissues之后即可使用
gh myissues
通过 gh issue 命令集,你可以将议题跟踪这一核心协作活动深度绑定到终端环境,减少上下文切换,实现从编码、问题反馈到讨论解决的全流程命令行闭环。
四、拉取请求管理(gh pr)
承接前序的仓库管理与议题追踪,代码协作的核心环节——拉取请求(Pull Request) ——将通过 gh pr 命令集在终端内完成全程管理。该命令覆盖了从创建、列表查看、代码审查到合并的完整生命周期,极大简化了基于分支的协作流程。
🔍 核心子命令全景
gh pr 提供了管理拉取请求生命周期所需的全部工具,其主要子命令包括:
| 命令 | 核心功能 | 关键场景 |
|---|---|---|
| list | 列出并筛选拉取请求 | 查看当前开放的PR、需要你审查的PR |
| create | 创建新的拉取请求 | 推送分支后,发起代码合并请求 |
| view | 查看PR详情 | 在终端或浏览器中检查PR描述、状态 |
| checkout | 检出PR到本地 | 将他人的PR分支拉到本地进行测试或审查 |
| merge | 合并拉取请求 | 在审查通过后,将更改合并入目标分支 |
| status | 查看相关PR状态 | 快速概览由你创建或等待你处理的PR |
| diff | 查看代码差异 | 审查PR引入的具体代码更改 |
📋 列表与筛选:gh pr list
此命令用于列出当前仓库的拉取请求,支持丰富的过滤条件,便于快速定位。
- 常用参数选项:
- --state : 按状态过滤,可选 open(默认)、closed、merged 或 all。
- --assignee : 按受理人过滤。
- --label : 按标签过滤。
- --web: 在默认浏览器中打开仓库的PR列表页面。
- --json : 以指定的JSON字段输出结果,便于后续脚本处理。
- 使用示例:
-
列出所有开放的PR
gh pr list列出所有已关闭的PR
gh pr list --state closed列出带有“bug”标签的PR
gh pr list --label bug以JSON格式输出PR编号和标题,用于脚本处理
gh pr list --state open --json number,title
🚀 创建与发起:gh pr create
这是最常用的命令之一,用于为当前分支或指定分支创建拉取请求。支持直接定义标题、正文、审查者等所有属性。
- 常用参数选项:
- --title : 设置PR的标题。
- --body : 设置PR的详细描述正文。
- --base : 指定目标分支(即要合并到的分支,如 main)。
- --head : 指定源分支(包含更改的分支)。默认使用当前分支。
- --draft: 创建为草稿PR,表示尚未准备就绪。
- --assignee : 分配PR给特定用户。使用 @me 表示分配给自己。
- --reviewer : 请求指定用户或团队进行审查。
- --label : 为PR添加标签。
- --project : 将PR添加到特定项目板。
- --web: 在浏览器中打开创建页面,使用网页表单填写。
- --fill: 自动使用最近的提交信息来填充标题和正文。
- 使用示例:
-
基于当前分支创建PR,目标分支为main,并设置标题和正文
gh pr create --base main --title "添加登录功能" --body "实现了OAuth2登录流程"创建草稿PR
gh pr create --title "WIP: 新功能" --draft分配给自己,并请求同事'octocat'和团队'myorg/core-team'审查
gh pr create --assignee @me --reviewer octocat,myorg/core-team使用最近的提交信息自动填充标题和正文(非常高效)
gh pr create --fill
👁️ 查看与审查:gh pr view、diff 与 checkout
这三个命令构成了本地代码审查的核心工作流。
- gh pr view: 查看特定PR的详细信息。
- 示例:
-
在终端查看编号为123的PR详情
gh pr view 123在浏览器中打开该PR进行查看
gh pr view 123 --web
- gh pr diff: 查看指定PR引入的所有代码更改(diff)。
- 示例:
-
查看PR #789的代码差异
gh pr diff 789
- gh pr checkout: 将指定PR对应的远程分支拉取到本地并切换过去,便于进行本地运行测试或深度代码审查。
- 示例:
-
检出编号为42的PR到本地(会创建一个对应的本地分支)
gh pr checkout 42
✅ 合并与清理:gh pr merge
在PR通过审查后,使用此命令将其合并到目标分支。
- 常用参数选项:
- : 要合并的PR编号(必填)。
- --merge, --squash, --rebase: 指定合并策略。
- --merge: 创建合并提交,保留完整历史。
- --squash: 将所有提交压缩为一个提交再合并,保持线性历史。
- --rebase: 变基合并。
- --delete-branch: 合并后删除源分支(头部分支)。
- 使用示例:
-
使用合并提交的方式合并PR #456
gh pr merge 456 --merge使用压缩提交的方式合并,并自定义提交信息
gh pr merge 456 --squash --commit-message “合并功能X”合并后删除源分支
gh pr merge 789 --squash --delete-branch
📊 状态概览:gh pr status
快速查看与你相关的PR摘要,通常分为“你创建的”、“等待你审查的”等类别,是每日站会的利器。
- 示例:
- gh pr status
⚙️ 进阶技巧与工作流集成
掌握基础命令后,以下技巧能进一步提升效率:
- 典型Git工作流集成: 在本地完成功能开发、提交并推送到远程分支后,直接使用 gh pr create 发起合并请求,形成无缝衔接的终端协作流。
- 利用别名简化操作: 通过 gh alias set 为常用命令设置快捷方式。
- gh alias set pc 'pr create --web' # 之后可用
gh pc快速通过网页创建PR
gh alias set pv 'pr view --web' # 快速在浏览器中查看PR
- 脚本化与自动化: 结合 --json 参数输出结构化数据,利用 jq 等工具编写脚本,实现自动检查PR状态、批量合并等流程。
-
获取所有开放PR的编号列表,用于脚本循环处理
gh pr list --state open --json number | jq '.[].number'
- 随时获取帮助: 任何子命令均可通过 --help 标志查看最详细、最新的官方参数说明。
- gh pr create --help
通过 gh pr 命令集,你可以将拉取请求的创建、跟踪、审查和合并完全嵌入到终端工作流中,显著减少上下文切换,提升代码协作的效率与流畅度。
五、GitHub Actions 集成(gh workflow / gh run / gh cache)
借助 gh,你可以高效地在命令行中管理 GitHub Actions,包括触发、监控工作流,管理缓存,甚至在工作流内部使用 gh 来操作 GitHub,构建强大的自动化流程。
gh workflow: 管理工作流定义
gh workflow 命令用于管理 GitHub Actions 的工作流定义,例如查看、启用、禁用以及最重要的手动触发工作流。
gh workflow list: 列出所有工作流
用于查看仓库中定义的工作流文件及其状态。
-
常用选项:
- 清楚列出所有工作流,包括已禁用的。
- 限制显示的数量(默认:50)。
-
示例:
-
列出当前仓库的活跃工作流
gh workflow list
列出指定仓库的所有工作流(包括已禁用的)
gh workflow list --all --repo owner/repo
gh workflow view: 查看工作流详情
查看指定工作流的 YAML 文件内容或最近运行状态。
- 常用选项:
- 在默认浏览器中打开工作流页面。
- 查看指定分支上的工作流文件内容。
- 以原始 YAML 格式输出工作流文件内容。
- 示例:
-
查看名为 “CI” 的工作流详情
gh workflow view “CI”获取 main 分支上 “deploy.yml” 工作流的原始 YAML
gh workflow view deploy.yml --ref main --yaml
gh workflow run: 手动触发工作流运行
这是最强大和常用的子命令,可使用命令行参数直接触发配置了 workflow_dispatch 事件的工作流。它可以替代 Web 界面上的 “Run workflow” 按钮,并支持参数化和脚本化调用。
-
触发前提:目标工作流必须在仓库的默认分支中,并已配置 workflow_dispatch 触发器。
-
核心语法:gh workflow run [flags]。其中 可以是工作流名称、ID 或 YAML 文件名。
-
关键参数:
- 在指定的分支、标签或提交上运行工作流。
- 为工作流提供输入参数,可以多次使用。
- 从文件中读取内容作为输入参数的值。
- 通过标准输入(stdin)以 JSON 格式传递所有输入。
-
使用示例:
-
触发名为 “Link Checker” 的工作流(CLI 会交互式提示输入)
gh workflow run “Link Checker”
在 “develop” 分支上运行工作流
gh workflow run “CI” --ref develop
传递输入参数(例如,传递多个构建参数)
gh workflow run “go构建并下载”
--ref main
-f repoPath=”https://github.com/owner/repo.git”
-f GO_VERSION=”1.20”
-f platforms=”linux/amd64,darwin/arm64”通过 stdin 传递 JSON 格式的输入
echo ‘{“name”:”mona”, “greeting”:”hello”}’ | gh workflow run greet.yml --json
启用与禁用
- gh workflow disable : 禁用指定工作流。
- gh workflow enable : 启用指定工作流。
gh run: 管理工作流运行实例
触发工作流后,gh run 命令组用于监控、检查和重新运行这些具体的执行实例。它涵盖了工作流运行的整个生命周期。
gh run list: 列出历史运行记录
查看仓库中最近的工作流执行历史,并支持强大的过滤。
- 常用过滤器:限制返回数量、按工作流筛选、按状态筛选(如 failure)、按分支筛选。
- 脚本化输出:—json 标志可以输出结构化数据,便于配合 jq 进行自动化处理。
- 示例:
-
列出名为 “Deploy” 的工作流所有失败的运行
gh run list --workflow “Deploy” --status failure以 JSON 格式输出最近的运行信息
gh run list --limit 3 --json number,workflowName,status,conclusion
gh run view: 查看运行详情与日志
深入查看某次特定运行的详细信息,包括每个作业和步骤的状态、日志输出。
- 常用选项:
- 查看本次运行中某个特定作业的详细信息。
- 查看完整日志(结合 —job 可看特定作业的日志)。
- 仅输出失败步骤的日志,便于快速排查。
- 如果运行失败,命令以非零状态退出,便于在脚本中判断结果。
- 示例:
-
查看 ID 为 123456 的运行详情
gh run view 123456 —verbose查看特定作业(ID: 987654)的完整日志,并过滤错误
gh run view --job 987654 --log | grep “ERROR”在脚本中判断运行是否成功
if gh run view 0451 --exit-status; then
echo “运行成功或进行中”
else
echo “运行失败”
fi
gh run rerun: 重新运行
重新触发已经执行过的工作流或其中特定的作业。这是调试失败 CI 的常用操作。
- 重要机制:重新运行时将使用原始触发者的权限以及相同的提交 SHA 和 Git 引用。
- 常用选项:
- 仅重新运行指定运行中失败的作业及其依赖。
- 重新运行工作流中的某个特定作业及其依赖。
- 为重新运行启用运行器诊断日志和步骤调试日志记录。
- 示例:
-
重新运行整个工作流
gh run rerun 754118627仅重新运行失败的作业
gh run rerun 754118627 --failed重新运行特定作业并启用调试
gh run rerun --job 1234567 --debug
gh run watch: 实时监控运行进度
在终端中实时流式输出(tail)某次工作流运行的日志。这让你无需刷新网页即可观察 CI/CD 进度。
监控最近一次运行的实时日志(不指定 ID,CLI 提供交互菜单)
gh run watch
监控特定运行的进度
gh run watch 123456
gh run download: 下载构件 (Artifacts)
用于下载工作流运行生成的产物。
下载某次运行中名为 “coverage-report” 的构件
gh run download 123456 -n coverage-report
gh cache: 管理 Actions 依赖缓存
GitHub Actions 缓存用于存储依赖项以加速工作流运行。gh cache 命令允许你直接从命令行查看和管理这些缓存条目,是自动化缓存维护、防止存储配额被占满的关键工具。
gh cache list: 列出与筛选缓存
列出仓库中的缓存条目,并提供丰富的过滤、排序和输出格式化选项。这是核心的管理命令。
- 关键参数:
| 选项 | 描述 | 默认值 |
|---|---|---|
| 按缓存键(key)的前缀进行过滤 | - | |
| 要获取的最大缓存数量 | 30 | |
| 按 Git 引用(ref)过滤(如 refs/heads/main) | - | |
| 对缓存进行排序的字段:created_at, last_accessed_at 或 size_in_bytes | "last_accessed_at" | |
| 排序顺序:asc(升序)或 desc(降序) | "desc" | |
| 使用指定的字段输出 JSON 格式的结果(如 id,key,sizeInBytes) | - | |
| 使用 jq 表达式过滤 JSON 输出 | - |
- 示例:
-
列出 main 分支的缓存
gh cache list --ref refs/heads/main列出与 PR #123 相关的缓存
gh cache list --ref refs/pull/123/merge以 JSON 格式仅输出键为 “npm-” 开头的缓存 ID 和大小
gh cache list --key “npm-” --json id,key,sizeInBytes使用 jq 筛选出大于 100MB 的庞大缓存
gh cache list --json id,key,sizeInBytes --jq ‘.[] | select(.sizeInBytes > 100*1024*1024)’
gh cache delete: 删除缓存
删除特定的缓存条目。通常与 gh cache list 结合,用于自动化清理脚本,例如在拉取请求关闭后移除其相关缓存。
- 基本用法:
- gh cache delete
- 其中 通过 gh cache list --json id 获取。
- 自动化清理示例:以下是一个在 PR 关闭后清理其缓存的 GitHub Actions 工作流片段,展示了如何组合使用 list 和 delete:
-
- name: Cleanup PR Caches
runs-on: ubuntu-latest
permissions:
actions: write # 必须有写入权限才能删除缓存
steps: - run: |
获取特定引用下的缓存 ID 列表
cacheKeysForPR=$(gh cache list --ref $BRANCH --limit 100 --json id --jq ‘.[].id’)
set +e # 不因删除失败而中断工作流
for cacheKey in $cacheKeysForPR
do
gh cache delete $cacheKey
done
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge - name: Cleanup PR Caches
在 Actions 工作流中使用 gh
GitHub CLI (gh) 本身已预装在 GitHub 托管的运行器上。这意味着你可以在 Actions 工作流的步骤中直接使用 gh 命令来操作 GitHub,实现更高级的自动化。
- 关键设置:必须在步骤中设置 GH_TOKEN 环境变量(通常值为 ${{ github.token }}),为 gh 命令提供权限。
- 应用场景:
- 自动化 Issue/PR 管理:在工作流步骤中自动创建 Issue、评论 PR。
- 调用 GitHub API:结合 gh api 查询 REST 或 GraphQL API,并将结果用于后续逻辑。
- 触发其他工作流:使用 gh workflow run 实现工作流间的链式触发。
通过 gh workflow、gh run 和 gh cache 命令组,你可以构建一个完全在命令行中闭环的 CI/CD 操作与监控环境,实现从触发、监控到资源管理的全链路高效管理。
六、扩展与高级配置(gh extension / gh config / gh alias)
熟练运用 GitHub CLI 的核心命令后,你可以通过本章介绍的高级功能,将 gh 彻底定制为你的专属效率工具。本节将系统讲解如何管理第三方扩展 (gh extension)、调整 CLI 的全局行为 (gh config),以及创建和管理命令别名 (gh alias)。
安装与管理第三方扩展
gh extension 命令为你打开了 GitHub CLI 的生态世界,允许你安装、使用和创建社区开发的扩展,无缝添加新功能。
安装扩展:每个扩展都是一个 GitHub 仓库,其名称必须以 gh- 开头(例如 gh-whoami)。你可以从仓库简写或完整 URL 安装。
从 GitHub.com 安装扩展
gh extension install dlvhdr/gh-dash
使用完整 URL 安装(适用于从 GitHub Enterprise Server 安装 GitHub.com 的扩展)
gh extension install https://github.com/octocat/gh-whoami
安装本地正在开发的扩展
cd ~/projects/gh-my-extension
gh extension install .
注意:如果已安装同名扩展,安装新来源的同名扩展会失败,需先卸载。
管理已安装的扩展:
- 列出所有已安装的扩展,并查看是否有更新:gh extension list
- 更新特定扩展:gh extension upgrade <扩展名> (扩展名是仓库名去掉 gh- 前缀的部分)
- 更新所有扩展:gh extension upgrade --all
- 卸载扩展:gh extension remove <扩展名>
创建新扩展:gh 提供了便捷的脚手架命令。
创建解释型扩展(如 Bash 脚本)
gh extension create hello
创建基于 Go 的预编译扩展(包含 Go 脚手架和工作流配置)
gh extension create --precompiled=go hello-go
创建基于其他语言(如 Rust)的预编译扩展(包含工作流脚手架)
gh extension create --precompiled=other hello-rust
安装扩展后,即可像使用内置命令一样运行它:gh <扩展名>。所有传递给 gh <扩展名> 的参数都会传递给扩展脚本。
精细调整 CLI 全局行为
gh config 命令用于查看和修改 GitHub CLI 的本地配置,所有设置存储在用户主目录下的配置文件(如 ~/.config/gh/config.yml)中。
查看配置:使用 gh config get 查询指定配置项的当前值。
查看当前设置的默认文本编辑器
gh config get editor
查看 Git 操作默认使用的协议
gh config get git_protocol
修改配置:使用 gh config set 更新配置,这是定制工作流的关键。
设置默认编辑器为 Visual Studio Code,并等待编辑完成
gh config set editor "code -w"
设置 Git 操作用 HTTPS 协议(便于自动存储凭据,简化 git push/pull)
gh config set git_protocol https
除了 editor 和 git_protocol,你还可以配置 prompt(交互式提示)、pager(分页程序)等选项。
创建与管理命令别名
gh alias 命令允许你为常用或复杂的命令序列创建简短易记的快捷方式,这是提升日常操作效率最直接的方法。
设置别名:使用 gh alias set 定义新别名。
为常用操作设置短别名
gh alias set co 'pr checkout'
gh alias set pc 'pr create'
为带复杂参数的查询设置别名(回顾第三章的例子)
gh alias set myissues 'issue list --assignee=@me --state=open'
为创建草稿 PR 设置专门别名(回顾第四章的例子)
gh alias set prd "pr create --draft"
设置后,gh co 123 等同于 gh pr checkout 123,gh prd 则直接启动创建草稿 PR 的流程。
管理别名:
- 列出所有已设置的别名及其对应命令:gh alias list
- 删除不再需要的别名:gh alias delete <别名>
手动编辑配置:除了命令行,你还可以直接编辑配置文件来管理别名,便于批量操作或备份。
配置文件通常位于 ~/.config/gh/config.yml。在 aliases: 节点下直接添加或修改即可:
aliases:
co: pr checkout
pc: pr create
prd: pr create --draft
通过合理组合使用扩展、配置和别名,你可以将 GitHub CLI 打造成一个高度个性化、高效无缝的命令行工作环境,真正实现“将 GitHub 带到命令行”的愿景。
七、通用 API 调用(gh api)
经过前面对仓库、议题、PR 和 Actions 等具体功能的学习,你已掌握了 gh 面向特定场景的命令。现在,让我们进入最通用、最强大的环节:gh api。它允许你直接向 GitHub 的 REST API 或 GraphQL API 发送经过身份验证的请求,实现任何 gh 原生命令未覆盖或需要高度自定义的自动化操作。
gh api 的设计哲学是 “终端优先、无缝集成”。它自动处理认证(复用 gh auth login 的令牌),支持智能参数传递,并能与 jq 等工具完美结合,让你将 GitHub 的完整能力深度嵌入命令行工作流和自动化脚本中。
🧠 核心语法与自动替换
其基本语法极为简洁:
gh api [flags]
- : GitHub API v3 (REST) 的路径,或使用 graphql 来访问 API v4 (GraphQL)。例如 /repos/{owner}/{repo}/issues。
- 关键特性:路径中的占位符 {owner}、{repo}、{branch} 会被自动替换。在当前 Git 仓库目录下操作时,这些占位符会填充为当前仓库的值;若非 Git 仓库,则使用 GH_REPO 环境变量中的值。这使命令通用且简洁。
⚙️ 核心参数详解
gh api 提供了丰富的标志来精细控制请求,下表是核心参数的快速参考:
| 选项 | 缩写 | 描述与典型用途 |
|---|---|---|
| --method | -X | 指定 HTTP 请求方法(GET, POST, PATCH 等)。 |
| --field | -F | 智能参数传递:传递 key=value,支持 JSON 类型转换(如 true 转布尔值)、读取文件(@filename)和自动替换占位符。 |
| --raw-field | -f | 传递字符串参数 key=value。添加此参数会自动将请求方法切换为 POST。 |
| --header | -H | 添加自定义 HTTP 请求头,如控制返回格式。 |
| --jq | -q | 响应处理利器:使用 jq 查询语法从 JSON 响应中提取和筛选数据。 |
| --paginate | 自动请求并合并所有分页的结果,用于处理列表数据。 | |
| --slurp | 与 --paginate 同用,将所有分页结果包装到一个 JSON 数组中输出。 | |
| --input | 从文件或标准输入(-)读取内容作为请求主体。 | |
| --template | -t | 使用 Go 模板语法自定义格式化 JSON 输出,可添加颜色。 |
| --verbose | 输出完整的 HTTP 请求和响应细节,用于调试。 | |
| --silent | 不打印响应主体,仅执行请求。 | |
| --hostname | 指定 GitHub 主机名,用于 GitHub Enterprise Server。 | |
| --cache | 缓存响应,格式如 1h。 |
🚀 基础使用示例
以下示例直接基于现有知识,展示常见场景。
- 获取数据(GET): 列出当前仓库的所有发布(Releases)。
- gh api /repos/{owner}/{repo}/releases
- 利用了路径占位符的便利性。
- 创建资源(POST): 在 Issues #123 下发表评论。
- gh api /repos/{owner}/{repo}/issues/123/comments -f body='评论内容'
- 使用 -f 传递内容,方法自动变为 POST。
- 发送文件内容: 创建一个包含本地文件内容的 Gist。
- gh api gists -F 'description=我的代码片段' -F 'files[test.sh][content]=@./local_script.sh'
- 演示了 -F 如何通过嵌套语法(key[subkey]=value)和 @ 符号读取文件。
- 使用 jq 过滤: 仅获取当前仓库所有 Issue 的标题。
- gh api /repos/{owner}/{repo}/issues --jq '.[].title'
- 这与之前 gh issue list --json title 的输出类似,但 gh api 让你能访问 API 提供的任何字段。
🧰 高级用法实战
掌握了基础后,这些技巧能将你的自动化提升到新的层次。
1. 复杂参数传递与类型转换
gh api 的参数传递非常强大。你可以传递数组:
gh api --method PATCH /orgs/{org}/properties/schema
-F 'properties[][property_name]=environment'
-F 'properties[][default_value]=production'
-F 'properties[][allowed_values][]=staging'
-F 'properties[][allowed_values][]=production'
2. 高效处理分页数据
对于可能返回大量结果的列表型 API(如 user/repos),使用 --paginate 自动获取所有页面。
获取用户的所有仓库(自动处理分页)
gh api user/repos --paginate
如果需要对所有数据进行整体分析,结合 --slurp 将所有页结果合并为一个 JSON 数组,方便 jq 处理。
3. 执行 GraphQL 查询
gh api 同样完美支持更灵活的 GraphQL API。
gh api graphql -F owner='{owner}' -F name='{repo}' -f query='
query($name: String!, $owner: String!) {
repository(owner: $owner, name: $name) {
releases(last: 3) {
nodes { tagName }
}
}
}
'
注意,通过 -F 传递的字段(如 owner, name)会被视为 GraphQL 变量。
4. 自定义输出模板
使用 --template 可以定制化输出格式和样式。
gh api /repos/{owner}/{repo}/issues --template
'{{range .}}{{.title}} ({{.labels | pluck "name" | join ", " | color "yellow"}}){{"\n"}}{{end}}'
此模板输出每个 Issue 的标题,并将其标签名称用黄色高亮显示。
5. 在 CI/CD 工作流中集成
在 GitHub Actions 中,使用内置的 GITHUB_TOKEN 进行认证, gh api 是实现复杂逻辑的利器。
- name: 通过 API 创建 Issue
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api /repos/${{ github.repository }}/issues
-f title="自动化报告"
-f body="此 Issue 由工作流于 ${{ github.sha }} 创建"
📝 最佳实践总结
- 善用占位符:在仓库目录下操作时,充分利用 {owner}、{repo} 的自动替换,使命令更通用。
- 优先使用 -F:相比 -f,-F 支持类型转换和文件读取,功能更全面。
- 响应处理管道化:将 gh api 与 jq、--template 或 --paginate 结合,在命令行中直接完成数据提取、格式化和分析。
- 认证安全:在自动化环境中,使用 GITHUB_TOKEN 或从安全存储中读取令牌,并遵循最小权限原则。
通过 gh api,你获得的不只是一个 API 调用工具,而是一个能够将任意 GitHub 操作编织进你本地开发与自动化流水线中的强大引擎。
八、完整命令索引与速查表
本节提供 GitHub CLI (gh) 所有命令的完整索引,旨在作为日常使用时的快速参考手册。命令按功能领域分组,每个条目包含命令、简要说明及一个典型用法示例,以兼顾入门指引与高阶查询需求。
核心命令 (Core Commands)
这些命令用于处理 GitHub 上的日常核心操作。
| 命令 | 作用 | 典型用法 |
|---|---|---|
| gh auth | 管理认证 | gh auth login |
| gh auth login | 交互式登录 GitHub | gh auth login |
| gh auth logout | 退出登录 | gh auth logout |
| gh auth refresh | 刷新认证状态 | gh auth refresh |
| gh auth setup-git | 配置 Git 使用 gh 进行认证 | gh auth setup-git |
| gh auth status | 显示当前登录状态 | gh auth status |
| gh auth switch | 在多个账户间切换 | gh auth switch |
| gh auth token | 打印认证令牌 | gh auth token |
| gh browse | 在浏览器中打开仓库、议题或 PR | gh browse --issues |
| gh codespace | 管理 GitHub Codespaces | gh codespace list |
| gh codespace code | 在 VS Code 中打开 Codespace | gh codespace code -c |
| gh codespace cp | 在本地与 Codespace 间复制文件 | gh codespace cp ./localfile .:/remote/path -c |
| gh codespace create | 新建一个 Codespace | gh codespace create -r owner/repo |
| gh codespace delete | 删除 Codespace | gh codespace delete -c |
| gh codespace edit | 编辑 Codespace 属性 | gh codespace edit -c --display-name “New Name” |
| gh codespace jupyter | 在浏览器中打开 JupyterLab | gh codespace jupyter -c |
| gh codespace list | 列出可用的 Codespaces | gh codespace list |
| gh codespace logs | 获取 Codespace 日志 | gh codespace logs -c |
| gh codespace ports | 列出 Codespace 端口 | gh codespace ports -c |
| gh codespace ports forward | 转发端口到本地 | gh codespace ports forward -c |
| gh codespace ports visibility | 设置端口可见性 | gh codespace ports visibility :private -c |
| gh codespace rebuild | 重建 Codespace | gh codespace rebuild -c |
| gh codespace ssh | 通过 SSH 连接至 Codespace | gh codespace ssh -c |
| gh codespace stop | 停止 Codespace | gh codespace stop -c |
| gh codespace view | 查看 Codespace 详情 | gh codespace view -c |
| gh gist | 管理 Gists | gh gist list |
| gh gist clone | 克隆一个 Gist 到本地 | gh gist clone |
| gh gist create | 创建一个新的 Gist | gh gist create |
| gh gist delete | 删除一个 Gist | gh gist delete |
| gh gist edit | 编辑一个 Gist | gh gist edit |
| gh gist list | 列出你的 Gists | gh gist list |
| gh gist rename | 重命名一个 Gist | gh gist rename |
| gh gist view | 查看一个 Gist | gh gist view |
| gh issue | 管理议题 | gh issue list |
| gh issue close | 关闭议题 | gh issue close 123 |
| gh issue comment | 在议题下发表评论 | gh issue comment 123 --body “确认问题” |
| gh issue create | 创建议题 | gh issue create -t “标题” -b “正文” |
| gh issue delete | 删除议题 | gh issue delete 123 |
| gh issue develop | 为议题创建开发分支 | gh issue develop 123 |
| gh issue edit | 编辑议题 | gh issue edit 123 --title “新标题” |
| gh issue list | 列出现有议题 | gh issue list --state open --assignee @me |
| gh issue lock | 锁定议题(禁止评论) | gh issue lock 123 |
| gh issue pin | 置顶议题 | gh issue pin 123 |
| gh issue reopen | 重新打开已关闭的议题 | gh issue reopen 123 |
| gh issue status | 展示与你相关议题的概览 | gh issue status |
| gh issue transfer | 将议题转移到其他仓库 | gh issue transfer 123 --repo new-owner/new-repo |
| gh issue unlock | 解锁议题 | gh issue unlock 123 |
| gh issue unpin | 取消议题置顶 | gh issue unpin 123 |
| gh issue view | 查看议题详情 | gh issue view 123 --web |
| gh org | 管理组织 | gh org list |
| gh pr | 管理拉取请求 | gh pr create |
| gh pr checkout | 将 PR 分支检出到本地 | gh pr checkout 456 |
| gh pr checks | 查看 PR 的 CI 检查状态 | gh pr checks 456 |
| gh pr close | 关闭 PR | gh pr close 456 |
| gh pr comment | 在 PR 下发表评论 | gh pr comment 456 --body “LGTM” |
| gh pr create | 创建 PR | gh pr create --fill --reviewer octocat |
| gh pr diff | 查看 PR 的代码差异 | gh pr diff 456 |
| gh pr edit | 编辑 PR 元数据 | gh pr edit 456 --title “新标题” |
| gh pr list | 列出 PR | gh pr list --state open --label bug |
| gh pr lock | 锁定 PR 对话 | gh pr lock 456 |
| gh pr merge | 合并 PR | gh pr merge 456 --squash --delete-branch |
| gh pr ready | 标记 PR 为准备评审 | gh pr ready 456 |
| gh pr reopen | 重新打开已关闭的 PR | gh pr reopen 456 |
| gh pr revert | 还原一个合并的 PR | gh pr revert 456 |
| gh pr review | 提交 PR 评审 | gh pr review 456 --approve --body “很好!” |
| gh pr status | 展示与你相关 PR 的概览 | gh pr status |
| gh pr unlock | 解锁 PR | gh pr unlock 456 |
| gh pr update-branch | 更新 PR 分支(合并目标分支) | gh pr update-branch 456 |
| gh pr view | 查看 PR 详情 | gh pr view 456 --web |
| gh project | 管理 GitHub 项目 | gh project list |
| gh project close | 关闭项目 | gh project close |
| gh project copy | 复制项目 | gh project copy |
| gh project create | 创建项目 | gh project create --owner org --title “新项目” |
| gh project delete | 删除项目 | gh project delete |
| gh project edit | 编辑项目元数据 | gh project edit --title “新标题” |
| gh project field-create | 为项目创建字段 | gh project field-create --name “状态” --data-type SINGLE_SELECT |
| gh project field-delete | 删除项目字段 | gh project field-delete --id |
| gh project field-list | 列出项目字段 | gh project field-list |
| gh project item-add | 将议题/PR 添加到项目 | gh project item-add --url |
| gh project item-archive | 归档项目项 | gh project item-archive --id |
| gh project item-create | 在项目中创建新项 | gh project item-create --title “新任务” |
| gh project item-delete | 删除项目项 | gh project item-delete --id |
| gh project item-edit | 编辑项目项 | gh project item-edit --id --field “状态:进行中” |
| gh project item-list | 列出项目项 | gh project item-list |
| gh project link | 链接项目模板 | gh project link |
| gh project list | 列出项目 | gh project list --owner org |
| gh project mark-template | 将项目标记为模板 | gh project mark-template |
| gh project unlink | 取消项目与模板的链接 | gh project unlink |
| gh project view | 查看项目详情 | gh project view --web |
| gh release | 管理发布 | gh release list |
| gh release create | 创建发布 | gh release create v1.0.0 --title “正式版” |
| gh release delete-asset | 删除发布中的资源文件 | gh release delete-asset v1.0.0 |
| gh release delete | 删除发布 | gh release delete v1.0.0 |
| gh release download | 下载发布资源 | gh release download v1.0.0 |
| gh release edit | 编辑发布信息 | gh release edit v1.0.0 --title “新标题” |
| gh release list | 列出发布 | gh release list |
| gh release upload | 上传资源到发布 | gh release upload v1.0.0 ./build.zip |
| gh release verify-asset | 验证发布资源签名 | gh release verify-asset v1.0.0 |
| gh release verify | 验证发布签名 | gh release verify v1.0.0 |
| gh release view | 查看发布详情 | gh release view v1.0.0 |
| gh repo | 管理仓库 | gh repo clone |
| gh repo archive | 归档仓库 | gh repo archive owner/repo |
| gh repo autolink | 管理自动链接引用 | gh repo autolink list |
| gh repo autolink create | 创建自动链接引用 | gh repo autolink create --key TRELLO --url-template ‘...’ |
| gh repo autolink delete | 删除自动链接引用 | gh repo autolink delete |
| gh repo autolink list | 列出自动链接引用 | gh repo autolink list |
| gh repo autolink view | 查看自动链接引用 | gh repo autolink view |
| gh repo clone | 克隆仓库 | gh repo clone owner/repo |
| gh repo create | 创建新仓库 | gh repo create my-proj --public --push |
| gh repo delete | 删除仓库 | gh repo delete owner/repo |
| gh repo deploy-key | 管理部署密钥 | gh repo deploy-key list |
| gh repo deploy-key add | 添加部署密钥 | gh repo deploy-key add --title “服务器” --key ./key.pub |
| gh repo deploy-key delete | 删除部署密钥 | gh repo deploy-key delete |
| gh repo deploy-key list | 列出部署密钥 | gh repo deploy-key list |
| gh repo edit | 编辑仓库属性 | gh repo edit --description “新描述” |
| gh repo fork | Fork 一个仓库 | gh repo fork owner/repo --clone |
| gh repo gitignore | 查看 .gitignore 模板 | gh repo gitignore list |
| gh repo gitignore list | 列出可用 .gitignore 模板 | gh repo gitignore list |
| gh repo gitignore view | 查看特定 .gitignore 模板 | gh repo gitignore view Node |
| gh repo license | 查看许可证模板 | gh repo license list |
| gh repo license list | 列出可用许可证模板 | gh repo license list |
| gh repo license view | 查看特定许可证模板 | gh repo license view MIT |
| gh repo list | 列出仓库 | gh repo list org-name |
| gh repo rename | 重命名仓库 | gh repo rename new-name |
| gh repo set-default | 设置默认仓库 | gh repo set-default owner/repo |
| gh repo sync | 同步 Fork 的仓库 | gh repo sync |
| gh repo unarchive | 取消仓库归档 | gh repo unarchive owner/repo |
| gh repo view | 查看仓库信息 | gh repo view owner/repo --web |
GitHub Actions 命令
这些命令用于管理和交互 GitHub Actions。
| 命令 | 作用 | 典型用法 |
|---|---|---|
| gh cache | 管理 Actions 缓存 | gh cache list |
| gh cache delete | 删除 Actions 缓存 | gh cache delete |
| gh cache list | 列出 Actions 缓存 | gh cache list --ref refs/heads/main |
| gh run | 管理工作流运行 | gh run list |
| gh run cancel | 取消一个工作流运行 | gh run cancel 123456 |
| gh run delete | 删除工作流运行记录 | gh run delete 123456 |
| gh run download | 下载运行产生的构件 | gh run download 123456 -n artifact-name |
| gh run list | 列出工作流运行记录 | gh run list --workflow CI |
| gh run rerun | 重新运行一个工作流 | gh run rerun 123456 --failed |
| gh run view | 查看工作流运行详情 | gh run view 123456 --log |
| gh run watch | 实时查看运行日志 | gh run watch 123456 |
| gh workflow | 管理工作流 | gh workflow list |
| gh workflow disable | 禁用工作流 | gh workflow disable “CI” |
| gh workflow enable | 启用工作流 | gh workflow enable “CI” |
| gh workflow list | 列出仓库工作流 | gh workflow list |
| gh workflow run | 手动触发工作流 | gh workflow run “CI” --ref main |
| gh workflow view | 查看工作流定义 | gh workflow view “CI” --yaml |
附加命令 (Additional Commands)
这些命令提供扩展功能、配置和底层操作。
| 命令 | 作用 | 典型用法 |
|---|---|---|
| gh agent-task | 管理代号为“agent-task”的功能 | gh agent-task list |
| gh alias | 管理命令别名 | gh alias set co ‘pr checkout’ |
| gh alias delete | 删除别名 | gh alias delete co |
| gh alias import | 从文件导入别名 | gh alias import < aliases.yml |
| gh alias list | 列出所有别名 | gh alias list |
| gh alias set | 设置别名 | gh alias set bugs ‘issue list --label bug’ |
| gh api | 直接调用 GitHub API | gh api repos/octocat/hello-world |
| gh attestation | 管理证明材料 (Attestations) | gh attestation download |
| gh attestation download | 下载证明材料 | gh attestation download --owner org --repo repo --bundle |
| gh attestation trusted-root | 管理可信根证书 | gh attestation trusted-root get |
| gh attestation verify | 验证证明材料 | gh attestation verify --bundle |
| gh completion | 生成 Shell 自动补全脚本 | gh completion -s zsh |
| gh config | 管理 CLI 配置 | gh config set editor “code -w” |
| gh config clear-cache | 清除内部缓存 | gh config clear-cache |
| gh config get | 获取配置项 | gh config get editor |
| gh config list | 列出所有配置 | gh config list |
| gh config set | 设置配置项 | gh config set pager ‘less -FRX’ |
| gh copilot | GitHub Copilot 相关功能(实验性) | gh copilot |
| gh extension | 管理扩展 | gh extension install user/extension |
| gh extension browse | 在浏览器中打开扩展仓库 | gh extension browse |
| gh extension create | 创建新的扩展模板 | gh extension create my-ext |
| gh extension exec | 直接执行扩展命令 | gh extension exec user/extension |
| gh extension install | 安装扩展 | gh extension install dlvhdr/gh-dash |
| gh extension list | 列出已安装扩展 | gh extension list |
| gh extension remove | 卸载扩展 | gh extension remove user/extension |
| gh extension search | 搜索扩展 | gh extension search “dashboard” |
| gh extension upgrade | 升级扩展 | gh extension upgrade --all |
| gh gpg-key | 管理 GPG 密钥 | gh gpg-key list |
| gh gpg-key add | 添加 GPG 密钥 | gh gpg-key add ./key.asc |
| gh gpg-key delete | 删除 GPG 密钥 | gh gpg-key delete |
| gh gpg-key list | 列出 GPG 密钥 | gh gpg-key list |
| gh label | 管理标签 | gh label list |
| gh label clone | 克隆标签到其他仓库 | gh label clone owner/source-repo --repo owner/target-repo |
| gh label create | 创建新标签 | gh label create “priority:high” --color “ff0000” |
| gh label delete | 删除标签 | gh label delete “priority:high” |
| gh label edit | 编辑标签 | gh label edit “bug” --name “Bug” --color “d73a49” |
| gh label list | 列出仓库标签 | gh label list |
| gh licenses | 查看开源许可证 | gh licenses list |
| gh preview | 预览实验性功能 | gh preview |
| gh ruleset | 管理仓库规则集 | gh ruleset list |
| gh ruleset check | 检查规则集与分支的匹配 | gh ruleset check --branch feature |
| gh ruleset list | 列出仓库规则集 | gh ruleset list |
| gh ruleset view | 查看规则集详情 | gh ruleset view |
| gh search | 搜索 GitHub | gh search code “function main()” |
| gh search code | 搜索代码 | gh search code “console.log” --repo owner/repo |
| gh search commits | 搜索提交 | gh search commits “fix bug” --author octocat |
| gh search issues | 搜索议题 | gh search issues “label:bug is:open” |
| gh search prs | 搜索拉取请求 | gh search prs “is:merged reviewed-by:@me” |
| gh search repos | 搜索仓库 | gh search repos “topic:cli” |
| gh secret | 管理 Actions 仓库/组织密钥 | gh secret list |
| gh secret delete | 删除密钥 | gh secret delete API_TOKEN |
| gh secret list | 列出密钥 | gh secret list |
| gh secret set | 设置密钥 | gh secret set API_TOKEN -b “my-secret-value” |
| gh ssh-key | 管理 SSH 密钥 | gh ssh-key list |
| gh ssh-key add | 添加 SSH 密钥 | gh ssh-key add --title “MacBook” --key ./id_ed25519.pub |
| gh ssh-key delete | 删除 SSH 密钥 | gh ssh-key delete |
| gh ssh-key list | 列出 SSH 密钥 | gh ssh-key list |
| gh status | 显示用户状态(如提及、议题、PR等) | gh status |
| gh variable | 管理 Actions 仓库/组织变量 | gh variable list |
| gh variable delete | 删除变量 | gh variable delete ENV |
| gh variable get | 获取变量值 | gh variable get ENV |
| gh variable list | 列出变量 | gh variable list |
| gh variable set | 设置变量 | gh variable set ENV -b “production” |
全局选项(适用于所有 gh 命令):
- --version: 显示 CLI 版本。
- --help: 显示任何命令的帮助信息。
此速查表整合了 GitHub CLI (gh) 的全部功能,覆盖日常开发、协作、自动化及系统管理的绝大多数场景。遇到具体参数疑问时,可随时使用 gh --help 获取最详细的官方说明。
内容由AI生成仅供参考