GitHub CLI は hub の代わりになるか
TL;DR
- github.com だけをを使っている場合 GitHub CLI は hub の代わりになる
GitHub Enterprise には現在(2020/4/24 時点)対応していないので僕の用途では hub の代わりにはならない2020/9/17 の GA のタイミングで GHE 対応しました!
モチベーション
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 が終わるまで待つしかない。
update
2020/9/17 の GA のタイミングで GHE 対応してました!
まとめ
仕事で GitHub Enterprise を使っている関係上、完全に GitHub CLI に移行して さらば hub。brew unistall hub
は今の所できない。 GitHub CLI の GitHub Enterprise 対応が待ち遠しい。