kakakakakku blog

Weekly Tech Blog: Keep on Learning!

よく使う "hub" コマンドを調べて "gh" コマンドに移行した

最近まで GitHub リポジトリを操作するときに ghq コマンドと hub コマンドを使っていた.リポジトリを git clone したり ~/ghq 直下のディレクトリに移動する場合に ghq コマンドと peco を使って,その他の操作は hub コマンドと git コマンドを使っていた.

GitHub CLI : gh コマンド

hub コマンドは今年3月からアップデートされてなく,今後は根本的に作り直された GitHub CLI に移行していく流れを感じる.GitHub CLI(gh コマンド)にも興味はあったけど,hub コマンドは便利だし,2014年頃から使っていて指に馴染んでいるし,様子を見ていた.ただ今年9月に GitHub CLI v1.0 がリリースされたこともあり,意を決して hub コマンドから gh コマンドに移行することにした.

cli.github.com

当然ながら gh コマンドは hub コマンドを完全に置き換えるものではなく,併用もあり得る.詳しくは以下の gh-vs-hub.md 参照で!

よく使う hub コマンド🏆

gh コマンドに移行するために Mac で history コマンドを実行して「よく使う hub コマンド🏆」を調べた.結果としては以下に載せた「4種類」のコマンドをよく使っていた.特に hub openhub checkout ${pr-url} は個人的には必須だった!

hub opengh open

リポジトリをブラウザで開く場合,GitHub CLI だと gh repo view --web コマンドで実現できる.もともと hub browse は入力しにくく hub open に alias を設定していたため,今回は gh alias set コマンドを使って gh open に alias を設定した.便利!

$ hub browse

$ gh repo view --web

$ gh alias set open 'repo view --web'
- Adding alias for open: repo view --web
✓ Added alias.

$ gh open

hub checkout ${pr-url}gh pr checkout ${pr-number}

プルリクエストをレビューするためにブランチを切り替える場合,GitHub CLI だと gh pr checkout ${pr-number} コマンドで実現できる.hub コマンドでは「プルリクエスト URL」を指定していたけど,gh コマンドでは「プルリクエスト番号」になる.今までの癖を直して「プルリクエスト URL」の末尾にある「プルリクエスト番号」をコピーすれば良く,許容範囲とした.慣れていく!

$ hub checkout https://github.com/kakakakakku/xxx/pull/100

$ gh pr checkout 100

hub pr listgh pr list

プルリクエスト一覧を確認する場合,GitHub CLI でも特に変化はなく gh pr list コマンドで実現できる.同様に Issue の場合も gh issue list で実現できる.問題なし!

$ hub pr list

$ gh pr list

$ hub issue

$ gh issue list

hub gist creategh gist create

作業中にログファイルなどを雑に Gist にアップロードしている.基本的に公開することはなく,Secret(プライベート)で作り,不要になったら削除している.そのときに hub gist create コマンドを使っていた.ファイルを指定することもできるし,echo と連携して Gist URL を発行するためだけに使うこともある.GitHub CLI でも特に変化はなく gh gist create コマンドで実現できる.問題なし!

$ hub gist create hello.txt

$ echo 'aaa' | hub gist create

$ gh gist create hello.txt

$ echo 'aaa' | gh gist create

まとめ

hub コマンドから gh コマンドに移行した.コマンド履歴から「よく使う hub コマンド🏆」を調べて,多少パラメータに変化はあるものの問題なく使えることを確認できた.実は hub sync コマンドや hub ci-status コマンドなど,gh コマンドではサポートされていないものもあったけど(hub ci-statusgh pr checks は異なる),最近はほとんど使ってなく,問題ないと判断した.

hub コマンドもアンインストールした!今までありがとう!

$ hub
zsh: command not found: hub