🔖

ghとfzfを使ってコマンドラインからリポジトリに紐づくPull Requestを開く

2023/10/01に公開

ターミナルから1手でカレントディレクトリに紐づいているgitのPRを開く方法です。

依存環境

依存環境は以下です。

結論

結論はこちらです。

gh pr list | fzf | awk '{print $1}' | xargs gh pr view --web

解説

gh pr list

リポジトリに紐づいているPull Requestを一覧で表示してくれます。
GitHub CLI | Take GitHub to the command line

fzf

fuzzy findしてくれます。かなり便利。
https://github.com/junegunn/fzf

awk '{print $1}'

fzfで一つPRを選ぶと以下のようなフォーマットで値が変えるので、awkで抽出します。

PR番号 PRのタイトル ブランチ名 OPEN/CLOSE Date

xargs gh pr view --web

PRの番号を投げると、該当するPull Requestを開いてくれます。
GitHub CLI | Take GitHub to the command line

xargsを何故つけてるか

パイプで繋げたらそのままいけるのでは?と思う人もいると思いますが、パイプでつなげるだけでは正しく動いてくれません。
gh pr viewは(おそらく引数を渡さずに実行できる関係で)標準入力を読んでくれないみたいでそのまま実行されてしまいます。

ドキュメントを読むと以下のように書いています。

Without an argument, the pull request that belongs to the current branch is displayed.
current branchに紐づいているpull requestが表示されるみたいです。

xargsは標準入力に渡された値とxargsのあとに続くコマンドを連結させてコマンドとして実行されるみたいなので、xargsをつけることでちゃんと動いてくれました。
xargsとパイプの違いに関しては以下の説明がわかりやすかったです。
https://teratail.com/questions/63845#reply-307588

まとめ

これでいちいちブラウザでリポジトリにアクセスしてPRを開く手間が省けました。fzfのpreviewのオプションとか使ったらもっといい感じになると思うので時間あったらやりたいですね。

GitHubで編集を提案

Discussion