gh CLI vs hub: コマンドラインからのGitHub
今日ではほぼすべての用途で、公式かつ活発にメンテナンスされているGitHub CLIであるghを選びましょう。hub(GitHubの機能を追加するためにgitをラップする)は事実上レガシーで、新規作業に推奨される選択肢ではなくなっています。
gh (GitHub CLI) と hub はどちらもGitHubをターミナルにもたらしますが、状況は変わりました。hubが先に登場し、gitをラップして git pull-request のようなコマンドが動くように拡張します。ghはGitHub公式のスタンドアロンCLIで、広いカバレッジ(PR、issue、release、Actions、gist、API)と活発な開発を持ちます。新規プロジェクトやCIでは、ghがメンテナンスされ推奨されるツールであり、hubは概ねメンテナンスモードにあります。
| gh CLI | hub | |
|---|---|---|
| メンテナー | 公式(GitHub) | コミュニティ(レガシー) |
| モデル | スタンドアロンのghコマンド | gitをラップ/拡張 |
| スコープ | PR、issue、release、Actions、API | PR、fork、gitの拡張 |
| メンテナンス | 活発 | 最小限 / レガシー |
| 認証 | gh auth login / token | トークンベース |
| 推奨用途 | 新規作業とCI | 既存のレガシースクリプト |
今ghがデフォルトである理由
ghはhubよりはるかに広くGitHubをカバーします。PRのオープンとレビュー、issueやreleaseの管理、Actionsの実行の確認、gh api でのAPI呼び出し、JSON出力でのスクリプティングなどです。公式CLIとしてGitHubの新機能を追随します。hubのgitラップ方式は巧妙でしたがより狭く、もはや活発に開発されていないため、新しい機能では後れを取ります。
CIでは
ghはGitHubホストのrunnerにプリインストールされ、GITHUB_TOKEN から自動的に認証されるため、workflowのスクリプティングに最適です。追加設定なしでPRへのコメント、releaseの作成、workflowのディスパッチ、APIの照会ができます。hubもCIで動作しますが、手動でのインストールとトークン設定が必要で、提供する機能も少なめです。パイプラインからGitHubを自動化するなら、ghが明確な選択です。
移行に関する注意
hubを使ったスクリプトがある場合、ほとんどのアクションにはghの直接的な同等物があります(例えばhubのpull-requestは gh pr create に対応します)。ghはgitをラップしないため、gitのサブコマンド経由ではなく明示的に呼び出します。これは通常より明快です。今日、新しい自動化をhubで始める理由はほとんどありません。
結論
新規作業には、特にプリインストールされ自動認証されるCIでは、公式のGitHub CLIであるghを使いましょう。hubは既存のレガシースクリプトを支えるためだけに残し、都合のよいときにghへ移行しましょう。