GitHub CLI(gh)で快適にGitHubを操作する

こんにちは、ATOM事業本部の古川です。

私はもともとGit操作はCLIツールで、GitHub操作はブラウザで行っており、このGitとGitHubのツールの切り替えに不便さを感じていました。 しかし、少し前にGitHub公式のCLIツールghが公開され、このツールを使うようになってからは切り替えの不便さを感じることなく、かなり便利に使えているので、本記事ではghの自分なりの使い方を紹介したいと思います。

インストール

macOSではHomebrewでghコマンドをインストールできます。

brew install gh

他のインストール方法についてはInstallationを参考にしてください。

ghコマンドがインストールされ、パスが通っているかはgh versionコマンドで確認できます。

$ gh version
gh version 2.70.0 (2025-04-11)
https://github.com/cli/cli/releases/tag/v2.70.0

ログイン

ghコマンドを使う場合は事前にGitHubアカウントで認証する必要があります。 認証はgh auth loginコマンドで対話的に行えます。

gh auth login

ユースケース

ここから私がよく使うユースケースを紹介します。 私はプルリクエスト関係の機能しか使わず、紹介するコマンドはプルリクエスト関係のものが主となります。

プルリクエストを作成する

ローカルでブランチを切って作業を行い、その作業が完了したら、その内容をベースブランチにマージするためにプルリクエストを作成すると思います。

このプルリクエストの作成はgh pr createコマンドで行えます。

gh pr create

このコマンドはローカルの現在のブランチからベースブランチに対するプルリクエストを対話的に作成します。

また、オプションによって事前にメタデータを設定することもできます。

例えば、私は-a @meオプションを付けて、作成したプルリクエストのAssigneeを自分にするようにしています。

gh pr create -a @me

そのほかに、-dオプションを付けるとドラフト状態でプルリクエストが作成され、こちらのオプションもよく使っています。

gh pr create -d

プルリクエストのCIを確認する

プルリクエストを作成した後はCIがきちんと通るかを確認したいと思います。

このCIが通るかの確認はgh pr checksコマンドで行えます。

gh pr checks 123

プルリクエストの指定は引数に番号やURL、ブランチを渡すことで行え、引数を渡さなかった場合は現在のブランチに対応するプルリクエストに対して操作が行われます。 これはプルリクエストに対する操作を行う他のコマンドでも同様です。

gh pr checksコマンドはオプションなしで実行すると、CIの実行が完了していなくても現在の状況を表示し、終了してしまいます。 そのため、私はCIの完了まで待つ--watchオプションを付けて利用しています。

gh pr checks -i 5 --watch

-iオプションはCIの状況を取得する間隔を秒で指定するオプションです。このオプションを省略した場合は10秒間隔で状況を取得します。

プルリクエストをマージする

プルリクエストのCIが通り、レビューが完了したら次はプルリクエストをマージすると思います。

このプルリクエストのマージはgh pr mergeコマンドで行えます。

gh pr merge

私のチームではfeatureブランチをベースブランチにマージする場合はスカッシュマージでマージするので、次のオプションを付けて利用する場合が多いです。

gh pr merge -d -s

-dオプションでマージ後にマージ元のローカルブランチとリモートブランチを削除します。 -sオプションでスカッシュマージを行います。

また、マージ前に本当にCIが通っているか、レビューが終わっているか確認したい場合もあります。そのときはgh pr viewコマンドを実行して、プルリクエストの情報を表示し、確認しています。

gh pr view

プルリクエストをレビューする環境を整える

開発中には他のメンバーからプルリクエストのレビューを依頼され、その全体像を把握するためにローカル環境にそのコードを持ってきたい場合もあると思います。 この場合はいくつかのコマンドを実行して、プルリクエストがレビューしやすい環境を整えています。

まず、gh pr statusコマンドやgh pr listコマンドで自分に依頼されているプルリクエストを確認します。

# 自分が作成したプルリクエストやレビュー依頼されたプルリクエストが表示される
gh pr status

# 自分がレビュー依頼されたプルリクエストが表示される
gh pr list --search "review-requested:@me"

次に、依頼されているプルリクエストの番号が分かったらgh pr checkoutコマンドでそのコードをローカルでチェックアウトします。

gh pr checkout 123

そして、gh pr view --webコマンドを実行してそのプルリクエストのページをブラウザで開きます。

gh pr view 123 --web

私はこのようにしてプルリクエストをレビューする環境を整えています。

まとめ

ghはターミナルからGitHubを操作するかなり便利なツールです。 CLIツールでGitを操作しており、GitHubをブラウザで操作することに不便さを感じている人はぜひ使ってみてください。