GitHubの公式CUI ghコマンドを使うようになってから、開発してく中でのストレスが減ったなーと気づきがあり、これ結構DX(開発体験)上がったんじゃね?と思ったので記事にしてみます。
想定読者
- GitHubのPull Request(以下、PR)をよく使う方
- GitHubのCUIなのでGithub使ってない方には興味なさげな話です
- その中でもPRにフォーカスした話をしようと思ってます
- ghコマンドを使ったことがない方、使い始めの方
- ghコマンドの基本的な話をするので、バリバリ使いこなしてる方にはそんなの知ってるわって話かもしれません
- zsh使ってる方に特にオススメします
- 詳細は後述ですがzshとの相性が抜群です
- zsh使ってない方はラッパー用意するとか一手間加えることになるかもです
- エンジニアの方
- 違う方のDX(Digital Transformation)の話は一切出てきません🙇♂️
TL; DR
- gh使うとPRに毎回設定する項目を指定するのが楽になるよ
- PR項目の設定漏れも無くなるよ
- コーディング中のアイデアとか疑問とかレビュアーに伝えたいこととかをメモする場所が定まるよ
- 個人的にはこれが1番のPR(ぴーあーる )ポイントです
ghとは
ghとはGitHubが公式に提供しているCUI(コマンド)です。
PRを発行したり、Issueを立てたりといった、GitHubの基本的な機能は網羅してるんじゃないですかね(投げやり)
機能が膨大なのでいきなり全部使いこなそうと思うと逆に取っ付きづらいので、PR発行機能に話を絞ります。
ghのPR発行機能
ghコマンドを使うことでCUIからPRを発行することができるようになります。
文法は以下です。
gh pr create [options]
PRを発行したいbranchをcheck outしている状態でコマンド入力すると、GitHub上にPRが発行されます。
ここで大事なのがoptionが豊富なことです。
PRに設定できる項目は大体ここで指定することができます。
よく使うoptionを紹介します。
option | 説明 |
---|---|
-F file | 本文をファイルから読み取る。 |
-r user | レビュアーの設定。 |
-a user | 担当者のアサイン。 @me で自分をアサインできる。 |
-t title | タイトルの設定。 |
-m milestone | マイルストーンの設定。 |
-l label | ラベルの設定。 |
-B branch | ベースブランチ(PRのマージ先)の設定。 設定しなければデフォルトブランチ(developなど)向けになる。 |
特にオススメしたいのが -F
optionです。
こちらを使うことにより、PRの本文をいつでも作成することができるようになります。私はテンプレートになるファイルを作っておいて、それをコピーして使い回してます。PR発行直前に作ることもあるし、コーディング中にこれ特にレビュアーに伝えとかないといけないなーと思った時点でメモして後で編集したり。作業中のコーディングに関することをここに集約することができるようになります。
また発行したPRをWEBブラウザで開く機能もあります。こちらは gh pr view --web
です。これをPR発行のあとに &&
で繋げてあげるとPR発行後にブラウザで微調整するみたいなことができるようになります。
コマンドの全体像はこんな感じになります。
gh pr create -F ~/somePath/xxx.md -m 'someMilestone' -a '@me' -r 'someReviewer' -r 'anotherReviewer' -t 'タイトル' -l 'someLabel' && gh pr view --web
これで面倒なレビュアーの指定やマイルストーンの指定がコマンドからできるようになりました👏 Hooray!🎉
…
でも、きっとあなたはこう思うでしょう…
コマンドが長すぎる…
私もそう思いました…思っていた時期がありました!でもzshのコマンド履歴からの入力補完が使えると、そんな心配はまったく不要でした!
zshのプラグインであるzsh-autosuggestionsを導入することで、コマンド履歴から入力候補を補完してくれるようになります。
(導入手順はこちらなどが参考になると思います)
gh
と入力するだけでオプション指定を復元することができます。
後はタイトルを修正したり微調整すれば大抵は事足ります。
これがなければghコマンドが自分の中でここまで定着することがなかっただろうなと思うくらい相性がよく、程よい柔軟性で運用を続けることができています。
まとめ
ghコマンドによって、PR発行時の煩わしさから解放されました。
正直使い始める前まではそれほど煩わしさを感じてはいなかったのですが、慣れてしまうともう後戻りできないと感じています。
参考になれば幸いです🙏