起因
写完代码 → 推分支 → 打开浏览器 → 找到仓库 → 点 "Compare & pull request" →
填标题描述 → 加 reviewer → 等审 → 收通知 → 看评论 → 回评论 → 改代码 →
重复。一天来回浏览器和编辑器几十次,每次都打断 flow。
gh 是 GitHub 官方 CLI,把 PR 的整个生命周期搬到终端。
解决方案
装 + 登录
# macOS / Linux
brew install gh
# 或 Debian/Ubuntu
sudo apt install gh
gh auth login
# 选 GitHub.com → HTTPS → 浏览器登录
开 PR
# 推完分支后一行开 PR
gh pr create --base main --title "feat: add OAuth" \
--body "Closes #42. ...
## Test plan
- [ ] manual login
- [ ] CI green"
# 或者完全交互式
gh pr create
# 自动用最近的 commit 信息预填
更便利的:
# 创建 + 自动指 reviewer + draft
gh pr create --draft --reviewer alice,bob,@org/backend
看 / review / 合
# 看本仓库所有 open PR
gh pr list
gh pr list --author @me
gh pr list --label bug
# 看某 PR 详情
gh pr view 123
gh pr view 123 --web # 还是想浏览器看
# 看 diff
gh pr diff 123
gh pr diff 123 --color always | less -R
# checkout 这个 PR 到本地
gh pr checkout 123
# Review
gh pr review 123 --approve --body "LGTM"
gh pr review 123 --comment --body "some notes"
gh pr review 123 --request-changes --body "..."
# 看 CI 状态
gh pr checks 123
# 合并(squash + 删分支)
gh pr merge 123 --squash --delete-branch
# admin override (绕过 required reviews,谨慎)
gh pr merge 123 --admin --squash
看自己/团队的 PR backlog
写个 alias:
alias my-prs='gh pr list --author @me --state all --limit 20'
alias to-review='gh pr list --search "review-requested:@me"'
alias team-prs='gh pr list --search "org:my-org is:open"'
to-review 是我每天上班第一件事 —— 一行看到所有等我 review 的 PR。
issue 也一并管
gh issue list --assignee @me
gh issue create --title "..." --body "..." --label bug --assignee @me
gh issue close 42 --comment "fixed in PR #43"
CI / workflow
# 看 actions run
gh run list --workflow=test.yml
gh run view 8123456789
gh run watch # 等当前分支最新 run 跑完,CI 通过通知
# 触发手动 workflow
gh workflow run deploy.yml -f environment=prod
gh run watch 是 release 时神器:push 后跑一行,CI 跑完自动桌面通知,
不必去浏览器盯。
自动复制 PR 链接
gh pr view 123 --json url --jq .url | pbcopy # macOS
gh pr view 123 --json url --jq .url | xclip # Linux
写到团队 Slack 时一秒粘上 URL。
gh extensions
gh extension install dlvhdr/gh-dash # TUI 仪表盘
gh extension install vilmibm/gh-screensaver # ASCII 烟花(彩蛋)
gh extension install yusukebe/gh-markdown-preview
gh dash 是装了之后再也戒不掉的 TUI:一屏看自己的 PR / 待 review /
最近 issue,j/k 浏览,o 在浏览器打开。
效果
- 开 PR 平均 < 30 秒(之前要 2-3 分钟)
- review 流程不切上下文:
gh pr diff 123+gh pr review --approve - CI 状态
gh pr checks比刷网页快 - 每天浏览器切换次数下降 70%+
踩过的坑
-
token 权限不够:
gh auth status看 scope。如果要管 GitHub
Actions / Pages 等需要额外 scope,gh auth refresh -s admin:org
补权限。 -
多账号:个人 + 公司 GitHub 都用 gh,
gh auth switch切。
--userflag 也能临时指定。 -
company GitHub Enterprise:
gh auth login --hostname github.company.com
单独登录;命令默认走该 host。 -
gh pr create 不显示 default branch:仓库设置 default branch 没
配,gh 默认拿你 push 的 branch。先gh repo edit --default-branch main。 -
gh pr checkout不能 fetch 别的 fork 的 PR 时:在公开 fork 的 PR 上
有时 git 配置不对。手动git fetch upstream pull/123/head:pr-123然后
git checkout pr-123。
登录后参与评论。