弊社のGitHubは、500超のリポジトリと50超のプロジェクトを抱えています。プロジェクトのKanbanを見ながらあちこちのリポジトリを行ったり来たり、あれれ昨日見ていたIssueはどこいった?あのIssueはどこのリポジトリだっけ?なんてことがよくあります。
GitHubのサイトには検索機能が備わっていますが、もっと素早く検索したいと日々ハックを探し求めています。この記事では、私が日常的に使っている検索方法を紹介します。
- macOSのショートカットで説明しています。
- サンプルは個人のGitHubページのため、組織を対象にする場合は
owner
をorg
に読み替えてください。
目次
1. あのプロジェクトどこだっけ 🤔
GitHubでは Cmd + K
でコマンドパレットを呼び出し !
をタイプするとプロジェクトの候補が表示されます。
GitHub Command Palette リファレンス | GitHub Docs
コマンドパレットでは、日本語変換のための Enter
が「決定してジャンプ」として反応します。またリポジトリ横断で検索する時はOwner/Organizationのページでコマンドパレットを呼び出す必要があり、若干面倒です。
Chrome検索エンジンを使おう
GitHubでProjectsを検索します。
検索結果のURLには検索語句「テスト」が含まれます。このURLを利用してChrome検索エンジンに登録します。
https://github.com/ringtail003?query=is%3Aopen+テスト&tab=projects
検索語句を %s
に置き換えます。
- https://github.com/ringtail003?query=is%3Aopen+テスト&tab=projects
検索エンジンに登録するURL
+ https://github.com/ringtail003?query=is%3Aopen+%s&tab=projects
chrome://settings/searchEngines
Chrome 設定 > 検索エンジン
検索する
Chromeのオムニバーで proj + Space
をタイプすると「GitHub Projectsを検索」という表示に変わります。つづけて検索語句を入力します。
GitHub Projectsの検索結果のページが開きます。
Chrome新規タブ → proj + Space
の2ステップでリポジトリ横断のプロジェクト検索ができます。
2. あのリポジトリの名前なんだっけ 🤔
冒頭でも触れたとおり、弊社のリポジトリ数は500超です。onboading-angular-tutorial-ringtail003
なんて長い名前だと、数カ月後には「ええと確か自分の名前が入ってたような…」くらいの記憶しか残っていません。
GitHubでは「Repositories」に検索窓が用意されています。
私は面倒くさがりなので検索のたびに「Repositories」のページを訪れるのが手間に感じてしまいます。
Chrome検索エンジンを使おう
プロジェクトと同じように、リポジトリ検索結果のURLをChrome検索エンジンに登録します。
検索語句を %s
に置き換えます。
- https://github.com/ringtail003/repositories?q=-archived%3Atrue+テスト
検索エンジンに登録するURL
+ https://github.com/ringtail003/repositories?q=-archived%3Atrue+%s
ショートカットを「repo」のように短くするとタイプ数が少なく済みます。
chrome://settings/searchEngines
Chrome 設定 > 検索エンジン
検索する
Chromeのオムニバーで repo + Space
をタイプして検索語句を入力します。
GitHub Repositoriesの検索結果のページが開きます。
{名前}-frontend
{名前}-backend
のように命名が揃っていると {名前}
で関連リポジトリをリストアップできます。
3. さっきコメントしたIssueどこだっけ 🤔
あちこちのリポジトリを行き来していると「さっきコメントしたIssue」をよく見失います。
GitHubではショートカット /
で検索バーを呼び出し commenter
や assignee
などオプションで検索条件を指定できます。
Issue およびプルリクエストを検索する | GitHub Docs
commenter:自分
の検索結果を Recently updated
でソートすると「さっきコメントしたIssue」が見つかります。
残念なことに私は commenter
やら assignee
やら、たくさんのオプションを覚えられません。ソートの選択肢も来月には忘れているでしょう。
Chrome検索エンジンを使おう
またまたChrome検索エンジンが活躍します。検索結果のURLを登録しましょう。
検索語句を %20+%s
とします。
- https://github.com/search?q=owner%3Aringtail003+commenter%3Aringtail003+テスト&type=issues&s=updated&o=desc
検索エンジンに登録するURL
+ https://github.com/search?q=owner%3Aringtail003+commenter%3Aringtail003+%20+%s&s=updated&o=desc&type=issues
chrome://settings/searchEngines
Chrome 設定 > 検索エンジン
検索する
Chromeのオムニバーで recent + Space
をタイプすると「GitHub Recent Commentを検索」という表示に変わります。つづけて検索語句を入力します。
もしくは recent + Enter
をタイプすると検索語句なしで「さっきコメントしたIssue」をリストアップします。
commenter
で検索して Recently updated
で並べ替えて…という複数の検索工程が recent + Enter
というシンプルなショートカットに置き換わります。
補足 いくつかのデバイスに登録したのですが %20
が機能しないケースがあるようです。その場合は検索語句を入力してください 🙇
4. package.jsonを全部みたい 🤔
Angularを使っているリポジトリをすべて列挙してバージョンチェックがしたい、みたいなことがあります。
GitHubではショートカット /
で検索バーを呼び出して path:"package.json" @angular/core
のように検索条件を指定します。
バージョンチェックはそれなりに間隔が空くので、次回検索する時に「はて、オプションはなんだっけ…」とGitHubヘルプを漁る自分が目に浮かびます。
保存しよう
「Save」で検索条件を保存できます。
検索バーで saved:
とタイプすると、保存した検索条件がリストアップされます。
他にも Node.js
のバージョンだったり、READMEの特定の見出しだったり、いろいろ抽出して保存できます。
5. リポジトリでコード検索したい 🤔
GitHubではショートカット /
で検索バーを呼び出して検索語句を入力します。
ところがどっこい、思いどおりにヒットしないことがあります。
VS Codeで開こう
GitHubのブラウザで .
をタイプするとブラウザ上でVS Codeが開きます。
よく見るとURLが github.com
から github.dev
に変わっています。これはGitHubが提供するWebベースのエディター機能で、ショートカット .
で呼び出しているという訳です。
github.dev Web ベース エディター | GitHub Docs
プロジェクト内検索は Cmd + Shift + F
です。ファイル全体が見えるので文脈もわかりやすいです。
検索に続けてコードを編集した時は Source Control
のメニューからコミットやプルリクエストの作成まで一貫して作業できます。
あちこちのリポジトリでコード検索して手直ししたい、そんな時に git clone
したり git pull origin
でメインブランチを最新にしたり、ローカルであれこれ作業する手間が省けます。
6. Issueタイトルを全部みたい 🤔
カタカナ表記と英語表記のちょっとした違いでIssue検索にヒットしない時は、タイトルをつぶさに眺めて探しています。
Issueがしこたま溜まっているリポジトリはひと苦労します。ページ送りで次のページを探して、また次のページを探して、という動作を繰り返すと手首が疲れます。
ghを使おう
タイトルのリストはターミナルが見やすいです。GitHub CLI(gh) コマンドをインストールしましょう。
初回のみログインが必要です。
gh auth login
git clone
したディレクトリでIssueタイトルがリストアップできます。
gh issue list
> Showing 30 of 73 open issues in ringtail003/demo
>
> #150 トップページが表示されない about 22 hours ago
> #142 リンク先が間違っている about 5 days ago
> #140 サービスのテストを追加 about 1 month ago
> #139 テストスイートをtestに揃える about 2 month ago
> #121 テストランナーをJestに変更 about 1 month ago
リストの表示件数は -L
オプションで指定できます。
gh issue list -L 100
さすがに100件のリストの目視はしんどいので絞り込みしたくなります。インタラクティブに絞り込みできる --jq
オプションが用置されていますが、私はかんたんシンプルなpecoへのパイプを使っています。
gh issue list -L 100 |peco
QUERY > テスト
> #140 サービスのテストを追加 about 1 month ago
> #139 テストスイートをtestに揃える about 2 month ago
> #121 テストランナーをJestに変更 about 1 month ago
探していたIssueが見つかったら browse
サブコマンドを使って、ブラウザで開きます。
gh browse 139
issue
を pr
にするとプルリクエストにも応用できます。
gh pr list
おわりに
GitHubはコードという資産の収納庫です。ちょっとした工夫で収納庫の引き出しが軽やかに開くと快適さが増します。この記事がみなさまの引き出しの潤滑剤となれば幸いです。