✈️

GitHub CLI : 僕が使っているエイリアス

2025/01/20に公開

はじめに

今更感ありますが、僕自身がよく使っている GitHub CLI コマンドエイリアスについて共有できればと思います。

使っているエイリアス

gh bw

  • gh browse のエイリアスで、リポジトリをブラウザで開くコマンドです。
  • リポジトリをブラウザで開くコマンドです。
  • とりあえず覚えて損はないコマンドです。
  • gh bw /frontend/app/pages.tsx:10 -c
    • 特定のファイル・行を指定してブラウザを開くコマンドです。
    • 頻繁に使うわけではないですが、実装についてさくっとチームメンバー共有して確認してもらいたいときなどに使います。
    • -c で現在の commit を指定して開くことができます。

gh pr co <PR番号>

  • 該当PRのリモートブランチをローカルにチェックアウトするコマンドです。PRをレビューする際、動作確認を行いたい場合に使います。
  • デフォルトでpr checkoutcoというエイリアスが設定してあるので、特に設定は必要なく利用可能です。

gh issue mine (-r)

  • 自分がアサインされている Issue 一覧をブラウザで開きます。
  • タスクを整理したり確認したいタイミングで叩きます。
  • -r フラグ指定がないときは、gh search issues --assignee="@me" --state=open -w で組織内のすべてのリポジトリを対象に検索するようになっています。
  • -r フラグ指定時は gh issue list --assignee "@me" -w で該当リポジトリ内を対象に検索するようになっています。

gh pr mine (-r)

  • 自分がアサイン・レビュー依頼されている PR 一覧を表示します。
  • とにかく自分に関連のある PR をすべて表示するコマンドです。
  • -r フラグ指定がないときは、gh search prs --assignee "@me" --state opengh search prs --review-requested "@me" --state open で組織内のすべてのリポジトリを対象に、自分が作成したPRとレビューを依頼されたPRをそれぞれ検索・表示するようになっています。
  • -r フラグ指定時は gh pr list -S "assignee:@me" --state opengh pr list -S "review-requested:@me" --state open で該当リポジトリ内PRで、自分が作成したPRとレビューを依頼されたPRをそれぞれ検索・表示するようになっています。
  • 残りの3つのエイリアスコマンドはこの gh pr mine を細分化するようなコマンドになっています。

gh pr awaiting-review (-r)

  • 自分がアサインされていて (作成済みで) レビュー待ちの PR 一覧を表示します。
  • レビュワーの方がレビューを忘れていることもあるので、リマインドをするためにもたまに確認しています。
  • -r フラグ指定がないときは gh search prs --assignee=@me --review=none --state=open で組織内リポジトリを対象に実行します。
  • -r フラグ指定時は gh pr list -S "assignee:@me review:none" --state=open で該当リポジトリを対象に実行します。

gh pr awaiting-merge (-r)

  • 自分がアサインされていて (作成済みで) すでに Approve されている PR 一覧を表示します。
  • 基本的に Slack 等で Approve されたことは通知するようにしていますが、タスクが込み合っているとためにマージを後回しにしてしまったりするので気が付いたタイミングでちょこちょこ叩くようにします。Approve された PR はさっさとマージしてしまいましょう。
  • -r フラグ指定がないときは gh search prs --assignee=@me --review=approved --state=open で組織内リポジトリを対象に実行します。
  • -r フラグ指定時は gh pr list -S "assignee:@me review:approved" --state=open で該当リポジトリを対象に実行します。

gh pr waiting-for-me (-r)

  • 自分がレビュー依頼されている PR 一覧を表示します。(一応 draft のものも含めて表示するようにしています。)
  • こちらもレビュー依頼は通知されるようにしていますが、忘れることもあるのでタスク整理のタイミングで叩くようにしています。
  • -r フラグ指定がないときは gh search prs --review-requested=@me --state=open で組織内リポジトリを対象に実行します。
  • -r フラグ指定時は gh pr list -S "review-requested:@me" --state=open で該当リポジトリを対象に実行します。

エイリアス設定

記事内に登場したエイリアスを設定するコマンドです。

cat <<EOF | gh alias import -
bw: browse
is: issue
sr: search
issue mine: '!if [[ "\$1" == "-r" ]]; then gh issue list --assignee "@me" -w; else gh search issues --assignee="@me" --state=open -w; fi'
pr mine: '!if [[ "\$1" == "-r" ]]; then echo && echo -e "\033[34mPRs assigned to me:\033[0m"; gh pr list -S "assignee:@me" --state open; echo -e "\n\n" && echo -e "\033[34mPRs requesting reviews for me:\033[0m"; gh pr list -S "review-requested:@me" --state open; else echo && echo -e "\033[34mPRs assigned to me:\033[0m"; gh search prs --assignee "@me" --state open; echo -e "\n\n" && echo -e "\033[34mPRs requesting reviews for me:\033[0m"; gh search prs --review-requested "@me" --state open; fi'
pr awaiting-review: '!if [[ "\$1" == "-r" ]]; then gh pr list -S "assignee:@me review:none" --state=open; else gh search prs --assignee=@me --review=none --state=open; fi'
pr awaiting-merge: '!if [[ "\$1" == "-r" ]]; then gh pr list -S "assignee:@me review:approved" --state=open; else gh search prs --assignee=@me --review=approved --state=open; fi'
pr waiting-for-me: '!if [[ "\$1" == "-r" ]]; then gh pr list -S "review-requested:@me" --state=open; else gh search prs --review-requested=@me --state=open; fi'
EOF

Discussion