Github CLIツールの`gh`と`hub`を試してみる。

こんにちは!k-junです。 今日はgithub cli toolとして開発されているhubghを導入して比べてみようかと思います。

ghとは

github cliとしてGithubが公式に開発しているcli toolですね。 ghはコマンド名であり名称ではないのですが、hubとの区別のために ここではghと書いています。

hubとは

こちらはgithub cliとして非公式に開発されているcli toolです。 リポジトリの作成削除などのブラウザ上での操作が必要な箇所をcliとして行えるようです。

https://github.com/github/hub

数年前から開発が進んでおり、ghと比べても機能面で充実しているように思います。

https://github.com/cli/cli

開発から時間が経っていないためか、issueとpull requestに対する一通りの操作しか機能が存在しません。 公式が後発で開発していることもあってか、hubよりはコマンドなどはまとまっています。

Install

macにinstallする際にはどちらもbrewで行けるようです。

brew install github/gh/gh
brew install hub

Features

gh

ghの方はマニュアルが用意されており、一通りみたところ現在の機能は主に issue周りとpull request周りだけのようですね。

  • issueに関する一通りの操作(list, create, view, status)
  • pull requestに関する一通りの操作(checkout, list, create, view, status)

発展途上のために機能が少ないのは当然なのですが、なぜcloseの機能がないんでしょうか...? 単にまだ開発されていないだけ...? コマンドの命名規則が統一されていたりと個人的には気に入っているのでどんどん機能が増えていって欲しいですね... あとは新しいrepositoryのopenとdeleteに関しては最低限欲しいところです...

hub

fullのdocumentationはこちらですね。 思ったよりもかなりいろいろな機能がもりもりでびっくりしました...

全部は紹介しきれないので個人的にいいなーと思った機能を紹介していきます。

  • hub create & delete repositoryがcliで操作できるようになるので、気軽に作って削除してができるようになります。 これがあるとgitの開発フローの実演する際などに全てterminalで完結させることができるので、 気軽にrepositoryを作ることができるようになりそうです。

  • hub compare 引数として与えたブランチと現在の差分を気軽にブラウザでみることができるようになります。 使用頻度も多そうなのでghにも欲しいですね...

  • hub sync localのブランチの状態を全て最新のものにしてくれるようです。vscodeの左下のボタンと同じ感じですかね。 こういうちょっとしたことが便利になるコマンドって嬉しいですよね。

Conclusion

現在の状態では間違いなくhubの方が便利です 笑。ですが、ghの方もこれから伸びてくるでしょうし、 何よりGithub公式がサポートしているのでどんどんクリティカルな機能が増えてghも便利になっていって欲しいですね。