Skip to content
Latchkey

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 CLIhub
メンテナー公式(GitHub)コミュニティ(レガシー)
モデルスタンドアロンのghコマンドgitをラップ/拡張
スコープPR、issue、release、Actions、APIPR、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へ移行しましょう。

関連ガイド