Jacky's blog
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • 工具链
  • AI
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • Android
  • Web
  • Server
  • Python
  • iOS
  • Java
  • Vue
  • 计算机基础
  • 工具链
  • AI
  • 个人成长
  • 博客
  • 分类
  • 标签
  • 归档
收藏
GitHub (opens new window)
  • 开发工具

  • 构建工具

  • 版本控制

    • github
    • git 使用指南
    • GitHub CLI(gh)工作流与 CI 排查
      • 登录与仓库选择
      • 从修改到 PR
      • Actions 排查与定时文档检查
  • 容器

  • 调试工具

  • 测试工具

  • CLI 工具

  • 网络工具

  • 编辑器

  • 设计工具

  • 多媒体

  • 包管理

  • 平台工具

  • tools
  • version_control
Jacky
2026-10-08
目录

GitHub CLI(gh)工作流与 CI 排查

git 负责本地版本与分支、提交和推送;gh 负责 GitHub 上的 PR、Issue、Actions 等操作。创建 PR 不会替你提交工作区中的修改。

# 登录与仓库选择

gh --version
gh auth login --hostname github.com --git-protocol https --web
gh auth status
gh repo view
1
2
3
4

在仓库目录内通常会根据 Git remote 确定目标,也可以加 --repo OWNER/REPO 明确指定;OWNER、REPO 是占位符,分别替换为仓库所有者和仓库名。gh 的登录状态与 git push 的认证不是同一件事;HTTPS Git 需要使用 gh 的凭证助手时可执行 gh auth setup-git,SSH 推送则检查 SSH 配置。

登录优先使用系统凭证存储;凭证存储不可用时可能退回明文文件。不要执行 gh auth token 后把输出贴入日志或知识库。认证说明 (opens new window)

# 从修改到 PR

常规开发使用 feature 分支,main 只同步远程;直接提交 main 仅用于明确批准的例外。下列文件路径与分支名按实际修改替换,执行前检查工作区,不要把无关修改一起暂存:

git status --short
git fetch origin
git switch main
git pull --ff-only origin main
git switch -c feature/docs-update

# 修改文档并验证之后,只暂存本次涉及的文件
git add -- docs/path/to/changed-guide.md
git diff --cached
git commit -m "docs: improve technical guide"
git push -u origin feature/docs-update

gh pr create \
  --repo OWNER/REPO \
  --base main \
  --head feature/docs-update \
  --title "完善技术文档" \
  --body "说明修改范围、验证方式以及尚未覆盖的内容。"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

也可在已推送的 feature 分支执行 gh pr create --base main --fill,根据提交信息填写标题与正文。使用显式 --head 时,创建命令不会代替你推送该分支。PR 创建参数 (opens new window)

操作 命令示例 注意
列出 PR gh pr list --state open 默认只列未关闭的 PR
查看内容 gh pr view 123 / gh pr diff 123 123 替换为 PR 编号
查看检查 gh pr checks 123 仓库必须配置 PR 检查才会有对应结果
检查通过后合并 gh pr merge 123 --merge 会修改远程;先确认审查、检查和仓库规则
启用自动合并 gh pr merge 123 --auto --merge 依赖仓库支持,并不等于立即合并

合并策略以仓库规则为准,--merge、--squash、--rebase 三选一,不使用 --admin 绕过保护规则。合并说明 (opens new window)

创建 PR 报 Head/Base SHA 为空或没有提交差异

这组错误不一定来自单一原因。先检查仓库、远程分支和提交差异,不要反复重试创建命令:

git remote -v
git fetch origin
git ls-remote --heads origin main feature/docs-update
git log --oneline origin/main..feature/docs-update
git diff --stat origin/main...feature/docs-update
1
2
3
4
5
检查结果 处理
远程没有 head 分支 确认分支和提交后,先 git push -u origin feature/docs-update
修改仍在工作区,没有新提交 检查并提交相关文件,再推送
base/head 名称或仓库不对 修正 --repo、--base、--head,跨个人 fork 时可用 用户名:分支
内容已经合并,或与 main 没有差异 不需要重复 PR;新修改应基于最新 main 开新分支

# Actions 排查与定时文档检查

操作 命令示例
列出 main 最近运行 gh run list --branch main --limit 5
限定工作流 gh run list --workflow ci.yml --branch main --limit 5
查看某次运行 gh run view 123456789
只看失败步骤日志 gh run view 123456789 --log-failed
等待结束并返回失败退出码 gh run watch 123456789 --exit-status
下载文档报告 gh run download 123456789 --name docs-maintenance-report --dir reports/actions-audit
手动启动文档检查 gh workflow run docs-audit.yml --ref main
重新执行失败任务 gh run rerun 123456789 --failed

运行编号是 run ID,不是 PR 编号、job ID 或提交号。gh run list --commit 应传完整提交 SHA,例如 gh run list --commit "$(git rev-parse HEAD)";短 SHA 可能查不到记录。gh run watch 的认证限制以当前版本手册为准;必要时改用 gh run view 查询。运行监控说明 (opens new window)

手动触发要求工作流配置了 workflow_dispatch,执行者也必须有相应权限。本项目发布工作流 ci.yml 目前监听 main/master 的 push,创建 PR 本身不会触发它;合并进 main 产生的 push 才会触发。docs-audit.yml 支持手动及每周定时检查,其报告只检查结构与复核线索,不代表文章技术结论已审核。

先定位失败阶段,再决定是否重跑:

日志特征 排查方向
getaddrinfo ENOTFOUND 检查域名与 registry,尤其锁文件中的 resolved 地址;反复重跑不能修复不可访问的依赖源
安装成功,VuePress 构建失败 查第一处构建错误、文档语法和插件;不要把所有 warning 都当成根因
构建成功,部署 push 认证失败 检查部署凭证及目标仓库权限;本地 gh 登录不能替代 Actions Secret
CLI 连不上 GitHub 检查网络和代理;不要把 token 写进命令参数或公开日志

重跑、启动工作流和合并 PR 都是远程写操作,可能触发部署或通知;确认目标后再执行。

相关记录:Git 命令、GitHub Actions。完整参数以 GitHub CLI 手册 (opens new window) 为准。

#Git#cli#guide
上次更新: 2026/10/09, 15:51:11
git 使用指南
Docker 使用指南

← git 使用指南 Docker 使用指南→

最近更新
01
Xcode 工程文件说明
09-28
02
osascript
09-23
03
xcodebuild 命令行构建
09-22
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式