GitHubでよく使っている機能まとめ
Viibarのエンジニアの id:mstssk です。
Viibarの開発部では、発表者を持ち回りにして好き勝手なことを発表しあう社内勉強会をやっています。
発表内容は本当に好き勝手でよく、初めて発表担当が回ってきたときは延々Splatoonの話をしたりしたんですが、今回は「もっとみんなGitHub使いこなそうぜ」という内容にしました。
※この記事はZennにも投稿しています。
id:mstssk がGitHubを使うにあたって日常的に使っている機能などなどです。 社内勉強会のために書き出したものをちょっとだけ清書して投稿しています。
定期的に確認するページ
ページ | URL |
---|---|
通知 | https://github.com/notifications |
レビュー依頼 | https://github.com/pulls/review-requested |
自分が担当のIssue,PR | https://github.com/pulls/assigned |
自分へのmention | https://github.com/pulls/mentioned |
ただし、仕事では特定のOrganizationだけにスコープを絞りたいので、次のようなURLをブックマークして使ってます。
https://github.com/pulls?q=is%3Aopen+user%3AViibar+assignee%3Amstssk
Pull Request の Draft 機能
PRをDraftにしておくことで作業中であることを明確にできます。
Draft機能ができる前はPRのタイトルに [WIP]
と入れたりしていました。
ただし、DraftのPRでもレビュアー設定をしたら、レビュアー設定された人に通知が飛びます。 不必要にノイズを飛ばさないよう、レビューできる状態になってからレビュアーは設定しましょう。
自分をアサインする
機能というか習慣です。
https://github.com/pulls/assigned のページを活用して自分が現在携わっているものを一覧しやすくするためにも、作業中のIssueやPRには基本的にちゃんと自分をアサインするべきです。
アサインするのを忘れがちなのなら、 https://github.com/apps/auto-assign のような自動でアサインするBotを使ってもいいです。
PRをレビュー依頼を出す前にrebaseする
これも習慣やお作法の類です。 トピックブランチで作業している間にベースブランチが進んでいるとかはよくある話なので、動作確認してレビュー依頼出す直前にrebaseしておきましょう。
$ git fetch $ git rebase origin/master topic $ git push origin topic --force-with-lease
Permalink
GitHubリポジトリ上のファイルの特定の箇所を指し示す時、そのブランチの変更に関わらず一定になるPermalinkを使いましょう。
- 🙅: https://github.com/mstssk/rollup-plugin-cleandir/blob/master/index.ts#L4
- 🙆: https://github.com/mstssk/rollup-plugin-cleandir/blob/04506eb3e1ac2336a4e7f35dc1bfe0be622ee0e7/index.ts#L4
タグの場合ならこういうURL https://github.com/mstssk/rollup-plugin-cleandir/blob/v1.0.0/index.ts#L4
Blameしながら親コミットをたどる
Blameの画面で、そのコミットが適用される前のコミットに移動するリンクがあります。 どういう経緯で変更が行われたのか参照するときに便利です。
ただし、コミットログが雑にされている場合もあり、どちらかというと次のコミットからPRをたどる方法の方をよく使ったりします。
コミットが所属するPRを参照する
各コミットのページには、そのコミットが含まれているブランチやタグ、PRへのリンクがあります。 このリンクからPRを見に行く事で、どういう目的で手が加えられたか参照できます。 私が所属するプロジェクトでは、コミットログについてはあまり口を出さないが、すくなくともPRではどういう目的の実装なのか書いていたり関連するIssue Trackerへのリンクが貼られているかもレビュー時にチェックすることで、最低限は実装の由来を将来辿れるようにしている事が多いです。
Organizationごとに別のメールアドレスに通知する
仕事用とプライベートとでGitHubアカウントを分けていない場合、仕事のOrganizationのリポジトリに関連する通知がプライベートのメールアドレスに届いても困ります。
GitHubは所属しているOrganization別に通知先メールアドレスを切り替える事ができます。 仕事用のメールアドレスをGitHubアカウントに追加して、会社のOrganizationだけ仕事用のメールアドレスに切り替えておきましょう。
2FAはアクセストークンをパスワード代わりにするよりSSH keyで
GitHub アカウントを2FAにしておくと、リポジトリにpushする時にパスワードを求められたりしてびっくりしたりしつつアクセストークンを設定したりしたものですが、今はマシン別にSSHキーを準備して済ませています。
リポジトリをcloneするときもSSH形式で行っておくとスムーズです。
トークン使う方法でも同じくらいシンプルにできるかもしれませんが、自分はSSH keyで済ませるほうがしっくりきたので。
Security Alerts
依存関係の脆弱性アラートとDependabotの自動バージョンアップPR作成は有効にしておきましょう。
依存の依存の依存パッケージに脆弱性アラートが上がったときなんかは複雑すぎてDependabotがエラーになってたりしますが。
GitHubリポジトリのwatch
リポジトリ内のファイル名で検索
あれ?あそこどうなってたっけ?と思った時に手元でIDE立ち上げるより、GitHubリポジトリ上でファイル名で検索したほうが早いこともあります。
「Go to file」ボタンでもいいですが、 t
でショートカット起動を覚えておくと楽です。
他のショートカットなどはこちら。
Schedules reminders
https://github.com/settings/reminders/
SlackとGitHubを連携させておくと、チームのチャンネルに通知したりもできますが、個人用にスケジュールを決めたリマインダーも設定できます。
id:mstssk の場合は、毎日特定の時間にチームのチャンネルにレビュー待ちなどの通知がくるのとは別に、レビュー依頼が出されたらリアルタイムで通知してくれるようにもしています。
PRのレビュー時の便利機能
☑️ Viewed
レビュー対象のファイルが多い場合に特に使います。 ☑するとそのファイルが折りたたまれてくれるので、他のファイルの確認に集中できます。
Hide whitespace changes
空白のdiffを無視して表示してくれます。
インデントが変わってるだけなど、不必要なdiffを無視してレビューできます。
昔から隠し機能としてURLに ?w=1
を付けるとwhitespaceのignoreができたのですが、あるタイミングでちゃんと機能としてUIに搭載されました。
Suggested changes
レビューで具体例を挙げてこう直すといいよ、と伝える場合に使える機能です。 ちょっとしたtypoの指摘などにも使えます。 レビュイーはそのまま取り込むことも出来ます。 あくまでPRとして出されたdiffの中でしか使えないので、周辺のコードも含んだ大きめの変更指摘なんかには使えません。
GitHub外の機能
Octotree https://www.octotree.io/
現在開いているリポジトリ・ブランチの内容をツリー表示してくれます。 特定のファイルを見たいわけでなく、上からたどって探したいときなんかに重宝します。