TL;DR

  • github.com だけをを使っている場合 GitHub CLI は hub の代わりになる
  • GitHub Enterprise には現在(2020/4/24 時点)対応していないので僕の用途では hub の代わりにはならない

モチベーション

GitHub CLI でできることが増えてきたので普段 GitHub の CLI クライアントとして使っている hub から移行できるか調査した。

Repositoryの操作

repository コマンドは以下のコマンドしか使わなそう。

$ gh repo view -w # 現在の repository をブラウザで表示する

Issueの操作

自分が使いそうな issue の基本的なコマンドとオプションはこの辺。

$ gh issue create                 # issue を terminal 上で作成する
$ gh issue list -L 200            # 検索を結果を 200 件まで表示 (default 30)
$ gh issue list -a takanabe       # assignee:takanabe を使って issue を検索する
$ gh issue list -l Type:Reactive  # label:Type:Reactive を使って issue を検索する

create コマンドは issue 作成に必要な項目をインタラクティブに好きなエディタで入力できるし、GitHub issue template も使えるので便利。 エディタは EDITOR=nvim のように環境変数で設定しておくか、 gh config コマンドでエディタの設定をすること。 list コマンドは peco などの interactive filter と組み合わせることでさらに便利になる。例えば、以下のような使い方。

$ gh issue list -L 200 | peco | cut -f 1 | xargs -I % gh issue view %    # peco 選択したissueをterminal で見る
$ gh issue list -L 200 | peco | cut -f 1 | xargs -I % gh issue view % -w # peco で選択したissueをブラウザで見る
$ gh issue list -a takanabe -l Type:Reactive -L 200 | peco | cut -f 1 | xargs -I % gh issue view % # ラベルとassigneeを指定してフィルターしてpecoで選択したものを terminalでみる

Pull Request の操作

自分が使いそうな pull request の基本的なコマンドとオプションはこの辺。

$ gh pr checkout 1   # PRのブランチをfetchしてcheckoutする。これまで以下でやっていたやつ。
$                       # git fetch origin refs/pull/1/head
$                       # git checkout -b USER/BRANCH_NAME FETCH_HEAD
$ gh pr create -f    # PRをwebを開かずに作成する
$ gh pr create -df   # Draft PRをwebを開かずに作成する
$ gh pr create -dwf  # Draft PRをwebを開いて作成する
$ gh pr list         # PR一覧を表示する

issue コマンドと同様に、peco と組み合わせることでより便利になる。

$ gh pr list | grep `git branch --show-current` | cut -f 1 | xargs -I % gh pr view %    # 現在のブランチのPRをterminalで開く
$ gh pr list | grep `git branch --show-current` | cut -f 1 | xargs -I % gh pr view % -w # 現在のブランチのPRをブラウザで開く

これまでに紹介したコマンドを alias にしておけば、hub でしていたこともカバーされるし、良さそう。

GitHub CLIのいいところ

GitHub CLI で一番良い点は issue と PR をインタラクティブな操作で teminal 上から作れるところ。PR に関しては gh pr create -f のようにすることでブラウザを開かないで terminal で PR の作成が完了するのは快適。そのうち issue も browser を開かないで完結できるようになるだろう。

GitHub Enterprise 対応

ここまでの調査で、hub でやっていたことは GitHub CLI でほとんど代替可能であることがわかった。これからも進化していくことを考えると乗り換えても良い気もしていた。GitHub Enterprise に非対応だと知るまでは。

While in beta, GitHub CLI is available for repos hosted on GitHub.com only. It does not currently support repositories hosted on GitHub Enterprise Server or other hosting providers. We are planning support for GitHub Enterprise Server after GitHub CLI is out of beta (likely toward the end of 2020), and we want to ensure that the API endpoints we use are more widely available for GHES versions that most GitHub customers are on.

現在(2020/4/24 時点)で対応していないので beta が終わるまで待つしかない。

まとめ

仕事で GitHub Enterprise を使っている関係上、完全に GitHub CLI に移行して brew unistall hub は今の所できない。 GitHub CLI の GitHub Enterprise 対応が待ち遠しい。

References