GitHub CLIでよく使うコマンド
GitHub CLI
Take GitHub to the command line
GitHub CLIを便利に使っている。基本的にGitHubの操作の起点はCLIからにしていて、現時点での自身の利用コマンドをまとめてみる。
gh browse
gh browse
- リポジトリをブラウザで開く
- ghq+pecoでターミナルでのリポジトリ移動をしているので、そこからGitHubのリポジトリを開くことが多い
gh browse config/routes.rb:15
- ファイルと行数を渡してデフォルトブランチでファイルを開く
- コード行をslack等でシェアしたい時に使うが、デフォルトブランチだと時間が経つとリンク先の情報が変わってしまうため、以下のコミット指定で開く方をよく使う
gh browse -c db/schema.rb:52
- c をつければ現在のコミットで開く
- gh b で開けるようにエイリアスにしている。 gh b で開くと現在のコミットで開き、 gh browse で開くとデフォルトブランチで開く
- この相対リンクの取得方法はRubyMineだと行にカーソルがある状態でcmd+Shift+Cで手に入るが、VSCodeだとちょうどよいキーボードショートカットがない…
gh browse -p
- projectsの一覧を開く
gh pr
gh pr create
- 対話式にPRを作成、git pushも含めてやってくれる
- 最近のアップデートでdraft PRも作れるようになった
gh pr view --web
- PRをブラウザで開く
- gh prv で開けるようにエイリアスにしている
gh pr list --web
- PR一覧をブラウザで開く
gh pr list --search "review-requested:@me"
- 自分がレビュワーをアサインされているPRで絞り込む
- 集中するタスクが一区切りしたタイミングでとりあえず叩く
gh pr checkout {number}
- リモートブランチをfetchしてきてチェックアウトする
- PRのレビュー時に、手元で動かしたかったり差分周辺のコードが読みたかったりする時に使う。
gh issue
gh issue list --web
- issue一覧をブラウザで開く
gh issue create
- 対話式にissueの作成
gh gist
gh gist view
- 自身の投稿したgistの内容を表示する。issueやprとは違いID指定をせずに実行するとgist一覧が表示され、インクリメンタルに絞り込んで開くことができる。
gh gist edit {id}
- id指定してgistを編集する。 gh config で設定したエディタで編集が可能。自分はvimを設定している。
- idは gh list で取得可能
gh api
- gh login で登録した認証情報を使ってGitHub APIを叩ける。ちょっと複雑なことがしたくなった際にサクッとAPIを試せるのは非常に便利。
- REST APIはもちろん、V4のGraphQL APIも叩ける。 --jq でjqシンタックスでの絞り込みがjqをインストールせずとも使える。
- 例えば適当なPRの変更差分ファイル全てをスペース区切りで出力したい場合、このようになる。
- gh api /repos/{owner}/{repo}/pulls/255/files --jq '[.[].filename] | join(" ")'
- ownerとrepoはプレースホルダーで、カレントディレクトリのリポジトリ情報で置き換えてくれる。
gh repo
gh repo edit --delete-branch-on-merge --enable-auto-merge
- リポジトリの設定を変更できる。全ての設定を満たしているわけではないがフラグが用意されているので、詳しくはドキュメントを見ると良い。 https://cli.github.com/manual/gh_repo_edit
- この二つはリポジトリを作った際に大体設定しているので、CLIで設定できるようになったのは楽。
組み合わせ
以上で紹介したコマンドや、その他のコマンドラインツールを組み合わせて使うこともある。少々長いが、一度実行しておけば後はhistoryから補完できるためエイリアスを用意したりはしていない。
gh pr checkout $(gh pr list --search "review-requested:@me" | peco | awk '{print $1}')
- 自身がレビュワーをアサインされているPRで絞り込み、pecoでインクリメンタルに選択し、選択したPRにチェックアウトする
gh gist edit $(gh gist list | peco| awk '{print $1}')
- gistの一覧を開いてpecoでインクリメンタルに選択し、選択したgistを編集する
この記事では自分がGitHub CLIでよく使うコマンドをまとめてみた。
他のコマンドは認知はしているものの使うユースケースが思いつかない、といったものも多いので、「このコマンドはこの状況で便利だよ」というのがあれば知りたい。workflowやreleaseは使いこなせると便利かも?と思いつつ使えていない。
GitHub CLIは月に複数回はマイナーバージョンがリリースされるほど活発に開発されている。新機能の追加も多いので今後も追っていきたい。
余談:GitHub CLIの設定ファイル
GitHub CLIの設定は ~/.config/gh/config.yml に保存されている。保存されている場所がわかればシンボリックリンクにしてgitで管理することができるので便利。自分の設定はこちら。
https://github.com/MH4GF/dotfiles/blob/master/.config/gh/config.yml