gh - официальный command-line tool от GitHub. В отличие от git,
который работает с локальным .git/ и пушит коммиты, gh ходит
в GitHub API: создаёт PR, листает issues, просматривает Actions
runs, скачивает релизы. Эти вещи живут в базе GitHub, не в
объектах Git.
Установка
# macOS
brew install gh
# Ubuntu/Debian
sudo apt install gh
# Windows
winget install GitHub.cli
scoop install gh
# проверка
gh --version
Полный список инсталлеров - на cli.github.com.
Авторизация
gh auth login
Команда задаёт несколько вопросов (GitHub.com/Enterprise, HTTPS/SSH, через браузер или с токеном) и сохраняет OAuth-токен в keychain ОС. После этого:
gh auth status # под какой учёткой, какие scopes
gh auth switch # переключить между несколькими учётками
gh auth logout # отозвать
Главные команды
# репозитории
gh repo clone owner/repo
gh repo fork owner/repo --clone # форк + клон + remote setup
gh repo create my-project --public --source=. --push
# pull requests
gh pr create -t "fix login" -b "Fixes #142"
gh pr list --author "@me"
gh pr view 123
gh pr checkout 123 # достаёт ветку любого PR локально
gh pr review --approve
gh pr merge --squash --delete-branch
gh pr checks --watch # следить за CI в реальном времени
# issues
gh issue create -t "Bug: ..." -b "..."
gh issue list --label bug
# actions
gh workflow run ci.yml
gh run list --workflow ci.yml
gh run view 12345 --log
gh run rerun --failed
JSON-вывод для скриптов
Почти любая команда принимает --json с указанием полей:
gh pr list --json number,title,author \
| jq -r '.[] | "\(.number) - \(.title) by \(.author.login)"'
Список валидных полей - --json без аргументов покажет ошибку с
ним. Это надёжный способ узнать, что доступно.
Алиасы
gh alias set co 'pr checkout'
gh alias set prs 'pr list --author "@me"'
Алиасы хранятся в ~/.config/gh/config.yml. Принимают $1, $2
для подстановки аргументов.
Escape hatch: gh api
Когда нативной команды нет - сырой доступ к REST/GraphQL:
gh api repos/cli/cli/contributors --jq '.[].login'
gh api graphql -f query='query { viewer { login } }'gh берёт на себя авторизацию, пагинацию, ретраи.
Когда gh быстрее браузера
- Создание PR из текущей ветки (
gh pr create). - Чекаут чужого PR для тестирования (
gh pr checkout). - Просмотр CI-логов с grep.
- Batch-операции и скрипты.
- Создание issue без отвлечения от терминала.
Когда браузер удобнее
- Inline code review (тянуть мышью по строкам).
- Длинные обсуждения с несколькими участниками.
- Большие diff'ы с многими файлами.
- Repository settings, organization management.
Оба инструмента сосуществуют. Терминал для скорости, браузер для визуальной проработки. Подробности - в главе 16.