🦧

gh コマンドでコミットハッシュからプルリクエストを取得する

2023/04/10に公開

とりあえずコマンドだけ教えてくれ!

該当のコミットハッシュがあるローカルリポジトリに cd した上で以下のコマンドを実行してください。

gh pr list -s all -S コミットハッシュ -w

はじめに

最近渋谷のサウナスに行ってサウナにハマりそうな yukyan です。
https://twitter.com/plane__crazy

「このコミット、メッセージ見てもどういう意図で実装されたかわかんねーな・・・」って時に、そのコミットが存在するPR(プルリクエスト)を見たいことあるじゃないですか。

そんな時に、GitHubでコミットハッシュ(a.k.a コミットID)で検索して、該当のコミットが含まれるPRを調べられるのをご存知ですか?


cli/cli でコミットハッシュで検索してみた例

これがとても便利なんですが、ローカルの環境でコミットハッシュを見つけた場合を考えると、

  1. ブラウザに切り替える
  2. 該当のリポジトリのページに飛ぶ
  3. Pull requests に飛ぶ
  4. 検索ボックスのフィルターを消す
  5. コミットハッシュで検索する

という工程が必要です。これはめんどくさいですね。

そこで 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 ってなんぞや?って思った方はこちらの記事もぜひ読んでいただけると嬉しいです!
https://qiita.com/n3_x/items/2a7d5aa0cdc6cdcff40a

Discussion