gh コマンドでコミットハッシュからプルリクエストを取得する
とりあえずコマンドだけ教えてくれ!
該当のコミットハッシュがあるローカルリポジトリに cd した上で以下のコマンドを実行してください。
gh pr list -s all -S コミットハッシュ -w
はじめに
最近渋谷のサウナスに行ってサウナにハマりそうな yukyan です。
「このコミット、メッセージ見てもどういう意図で実装されたかわかんねーな・・・」って時に、そのコミットが存在するPR(プルリクエスト)を見たいことあるじゃないですか。
そんな時に、GitHubでコミットハッシュ(a.k.a コミットID)で検索して、該当のコミットが含まれるPRを調べられるのをご存知ですか?
cli/cli でコミットハッシュで検索してみた例
これがとても便利なんですが、ローカルの環境でコミットハッシュを見つけた場合を考えると、
- ブラウザに切り替える
- 該当のリポジトリのページに飛ぶ
- Pull requests に飛ぶ
- 検索ボックスのフィルターを消す
- コミットハッシュで検索する
という工程が必要です。これはめんどくさいですね。
そこで gh コマンドの出番です!
gh とは
GitHub CLI
とも呼ばれており、GitHubが提供するGitHubを操作するための公式のCLIツールです。
詳しい機能一覧は公式ドキュメントを見てみてください。
gh のインストールと設定
gh を使うためにはインストールと、GitHub、もしくはGitHub Entepriseの認証が必要です。
下記のサイトを参考にして設定してみてください。
gh のインストールと設定が終わったら、次の項から実際にコミットハッシュを使ってPRを検索してみましょう。
gh pr list
gh には gh pr list
というコマンドがあります。
このコマンドに対して、フラグでステータスや検索クエリなどの情報を与えることで、カレントディレクトリのリポジトリのPRを表示してくれます。要は先ほどのプルリクエストの検索画面のようなことができます。
例えば、先ほど GitHubでコミットハッシュで検索した例をお見せしたように、このコマンドにコミットハッシュを渡してあげることによって、PRを取得することができます。
コマンド例
基本
gh pr list --state all --search コミットハッシュ
PRのstateには open
, closed
, merged
の3つあります。今回は全てのPRを検索対象にしたいので、 --state
の引数に all
を指定します。
searchクエリにはコミットハッシュを指定しています。
実行結果
cli on trunk via 🐹 v1.20.3
❯ gh pr list --state all --search d104926
Showing 1 of 1 pull request in cli/cli that matches your search
#7080 Retry fetching repo from template heaths:issue7055 about 1 month ago
先ほどの画像と同じく、PRが表示されているのがわかります。
Webで開きたい場合
gh pr list --state all --search コミットハッシュ --web
--web オプションをつけると、ブラウザで検索結果画面を表示してくれます。
実行結果
ブラウザで検索結果画面が表示されました。
おわりに
コミットハッシュからPRを特定できる gh pr list
は、他の人が書いたコードの意図を探る機会の多い業務で役に立つコマンドだと思います。ぜひ積極的に使ってみてください!
コマンドが長いので、 alias を貼ったり、 abbr で省略コマンドを定義するのがおすすめです。
abbr ってなんぞや?って思った方はこちらの記事もぜひ読んでいただけると嬉しいです!
Discussion