GitHub CLI (gh) は、GitHub が公式に提供しているコマンドラインツールです。
ブラウザを開かなくても、リポジトリの clone、Issue の確認、Pull Request の作成、GitHub Actions の実行状況確認などをターミナルから操作できます。Git と組み合わせて使うと、日常の GitHub 作業をかなり短い導線にできます。
この記事では、Windows と Ubuntu で gh をインストールし、最初に覚えておくと便利な基本コマンドをまとめます。
gh でできること
gh を使うと、たとえば以下のような作業をターミナルから実行できます。
- GitHub へのログイン
- リポジトリの clone / 作成 / 表示
- Issue の一覧表示 / 作成 / 表示
- Pull Request の一覧表示 / 作成 / checkout / merge
- GitHub Actions の workflow / run の確認
- ブラウザで現在のリポジトリや PR を開く
GitHub の画面を見に行く回数を減らせるので、コードを書いている流れを止めにくいのが大きなメリットです。
インストール
Windows にインストールする
Windows では、公式手順として WinGet を使う方法が一番簡単です。
PowerShell または Windows Terminal を開いて、以下を実行します。
winget install --id GitHub.cli
インストール後、ターミナルを開き直して確認します。
gh --version
バージョン情報が表示されればインストール完了です。
アップデートする場合は以下です。
winget upgrade --id GitHub.cli
もし WinGet を使わない場合は、GitHub CLI の Releases ページから MSI インストーラーをダウンロードして導入することもできます。
Ubuntu にインストールする
Ubuntu では、標準の apt リポジトリからそのままインストールできます。
まずパッケージ情報を更新してから、gh をインストールします。
sudo apt update
sudo apt install gh
確認します。
gh --version
アップデートする場合は、通常の apt パッケージと同じです。
sudo apt update
sudo apt install gh
もし apt で見つからない場合や、GitHub CLI の最新版を追いたい場合は、GitHub CLI 公式リポジトリを追加する方法もあります。
type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)
sudo mkdir -p -m 755 /etc/apt/keyrings
wget -nv -O /tmp/githubcli-archive-keyring.gpg https://cli.github.com/packages/githubcli-archive-keyring.gpg
sudo cp /tmp/githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg
sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
sudo mkdir -p -m 755 /etc/apt/sources.list.d
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update
sudo apt install gh
通常利用なら、まずは sudo apt install gh で十分です。
初期設定: GitHub にログインする
インストールできたら、GitHub アカウントでログインします。
gh auth login
対話形式でいくつか質問されます。個人利用で GitHub.com を使うなら、だいたい以下の選択で問題ありません。
? Where do you use GitHub? GitHub.com
? What is your preferred protocol for Git operations? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Login with a web browser
ポイントは、Authenticate Git with your GitHub credentials? で Yes を選ぶことです。これにより、gh だけでなく通常の git push や git fetch の HTTPS 認証も gh に任せられます。
ブラウザが開いたら GitHub にログインして認証します。WSL やサーバー上などブラウザを開きにくい環境では、表示されたワンタイムコードを手元のブラウザで入力して認証します。
ログイン状態は以下で確認できます。
gh auth status
普通の git コマンドでも gh の認証情報は使われる?
使われます。ただし、gh auth login の途中で以下を選んでいることが前提です。
? Authenticate Git with your GitHub credentials? Yes
この設定を有効にすると、gh が Git の credential helper として設定されます。そのため、以下のような普通の Git コマンドでも、gh でログインした認証情報が利用されます。
git fetch origin
git pull
git push origin main
確認するには、Git の credential helper 設定を見ます。
git config --global --get credential.helper
環境によって表示は少し違いますが、gh auth git-credential を使う設定になっていれば OK です。
注意点として、この仕組みが使われるのは基本的に HTTPS の remote URL です。
git remote -v
remote URL が以下のようになっていれば、HTTPS 経由です。
origin https://github.com/OWNER/REPO.git (fetch)
origin https://github.com/OWNER/REPO.git (push)
一方で、git@github.com:OWNER/REPO.git のような SSH の remote URL を使っている場合は、Git の認証は SSH key 側で行われます。この場合でも gh コマンド自体の GitHub API 操作には、gh auth login の認証情報が使われます。
よく使う基本コマンド
ここからは、最初に覚えておくと便利なコマンドです。
リポジトリ操作
リポジトリを clone します。
gh repo clone OWNER/REPO
たとえば GitHub CLI 本体のリポジトリなら以下です。
gh repo clone cli/cli
現在のリポジトリをブラウザで開きます。
gh repo view --web
新しいリポジトリを作成します。
gh repo create
対話形式で公開範囲やローカルディレクトリの扱いを選べます。スクリプト化したい場合は、--public や --private などのオプションを付けて実行できます。
gh repo create my-app --private --source=. --remote=origin
Issue 操作
Issue の一覧を表示します。
gh issue list
Issue の詳細を表示します。
gh issue view 123
Issue を作成します。
gh issue create --title "ログイン画面の文言を修正する" --body "ボタンの表記を変更する"
ブラウザで Issue を開きたい場合は --web を付けます。
gh issue view 123 --web
Pull Request 操作
Pull Request の一覧を表示します。
gh pr list
現在のブランチから Pull Request を作成します。
gh pr create
コミットメッセージやブランチ情報からタイトル・本文を自動入力したい場合は --fill が便利です。
gh pr create --fill
Pull Request の詳細を表示します。
gh pr view 123
Pull Request のブランチをローカルに checkout します。
gh pr checkout 123
レビューや CI の状態を確認します。
gh pr checks 123
マージします。
gh pr merge 123
GitHub Actions 操作
workflow の一覧を表示します。
gh workflow list
実行履歴を表示します。
gh run list
最新の workflow run を確認します。
gh run view
実行中の workflow を待ちます。
gh run watch
失敗したジョブのログを確認する場合は、まず gh run list で run ID を確認してから以下を実行します。
gh run view RUN_ID --log-failed
便利な使い方
現在のページをブラウザで開く
現在のリポジトリを GitHub 上で開きます。
gh browse
Issue や PR の URL を組み立てる必要がないので、地味に便利です。
自分に関係する状況をまとめて見る
自分に関連する Issue、PR、レビュー依頼などを確認できます。
gh status
朝の作業開始時に一度実行すると、見るべきものをざっと把握できます。
エイリアスを作る
よく使うコマンドは短い別名を付けられます。
gh alias set prs 'pr list --author @me'
gh prs
この例では、自分が作成した Pull Request 一覧を gh prs で表示できます。
Windows と Ubuntu で共通して気をつけること
ターミナルを開き直す
Windows ではインストーラーが PATH を更新します。gh が見つからない場合は、Windows Terminal や PowerShell を開き直してください。
Ubuntu でも、インストール後にシェルがコマンドの場所をキャッシュしている場合があります。うまく認識されないときは、ターミナルを開き直すか hash -r を実行します。
Git の認証方式をそろえる
gh auth login で HTTPS を選び、Git の認証にも gh を使う設定にした場合、リモート URL も HTTPS にしておくと扱いやすいです。
git remote -v
git remote set-url origin https://github.com/OWNER/REPO.git
SSH を使いたい場合は、gh auth login の対話で SSH を選び、SSH key の登録も gh に任せることができます。HTTPS と SSH のどちらでも使えますが、チームや自分の環境で片方に寄せておくとトラブルシュートが楽です。
GitHub Enterprise Server を使う場合
会社などで GitHub Enterprise Server を使っている場合は、ホスト名を指定してログインします。
gh auth login --hostname github.example.com
通常の GitHub.com とは認証先が別になるため、gh auth status でどのホストにログインしているか確認しておくと安心です。
まとめ
gh を入れておくと、GitHub 上の操作をターミナルから自然に扱えるようになります。
まずは以下の流れだけ覚えておけば十分です。
gh auth login
gh repo clone OWNER/REPO
gh issue list
gh pr list
gh pr create --fill
gh run list
慣れてきたら gh pr checkout、gh pr checks、gh run watch あたりを使うと、Pull Request と CI の確認がかなり楽になります。