skip to content
Logo
Yurikago Blog
Table of Contents

GitHub CLIとは

GitHubをターミナルやスクリプトから操作するためのCLIです。色々できます。

Core commands

コマンド説明
gh authGitHubでghとgitを認証する
gh browseWebブラウザでGitHubリポジトリを開く
gh codespaceCodespaceに接続して管理する
gh gistgistsを操作する
gh issueイシューを操作する
gh prPRを操作する
gh releaseリリースを管理する
gh repoリポジトリを操作する

Actions commands

コマンド説明
gh runGitHub Actionsから実行された最近のワークフローを一覧表示、表示、および監視する
gh workflowGitHub Actionsでワークフローを一覧表示、表示、実行する

Additional commands

コマンド説明
gh aliasエイリアスを使用して、ghコマンドのショートカットを作成したり、複数のコマンドを作成したり
gh apiGitHub APIに対して認証済みのHTTPリクエストを作成し、レスポンスを出力する
gh completionGitHub CLIコマンドのshell completion scriptsを生成する
gh configghの構成設定を表示または変更する
gh extension拡張機能を追加する
gh gpg-keyGitHubアカウントに登録されているGPGキーを管理する
gh labelラベルを操作する
gh searchGitHub全体を検索する
gh secretsecretをリポジトリまたは組織レベルで設定する
gh ssh-keyGitHubアカウントに登録されているSSHキーを管理する
gh statusサブスクライブしているすべてのリポジトリにわたって、GitHubでの作業に関する情報を出力する

参考: https://cli.github.com/manual/gh

検証環境

  • M1 MBP@12.4
  • gh@2.12.1 (GitHub CLI)

インストール

Homebrew、MacPorts、Conda、Spackを経由してインストールできます。またreleases pageからバイナリをダウンロードすることが可能です。今回はHomebrewでインストールします。

Terminal window
% brew install gh

参考: https://github.com/cli/cli#macos

構成

CLIの認証を行います。以下のコマンドを実行します。

Terminal window
% gh auth login

いくつか質問されるので回答していきます。

? What account do you want to log into? [Use arrows to move, type to filter]
> GitHub.com
GitHub Enterprise Server
? What is your preferred protocol for Git operations? [Use arrows to move, type to filter]
> HTTPS
SSH
? Authenticate Git with your GitHub credentials? (Y/n) Y
? How would you like to authenticate GitHub CLI? [Use arrows to move, type to filter]
> Login with a web browser
Paste an authentication token
? How would you like to authenticate GitHub CLI? Login with a web browser
! First copy your one-time code: XXXX-XXXX
Press Enter to open github.com in your browser...

Enterを押すとブラウザでGitHubのDevice Activationページが表示されます。提示されたone-time code(XXXX-XXXX の部分)をDevice Activationページのフォームに入力してContinueをクリックします。

CLIが要求するアクセス権限のリストが表示されます。問題なければAuthorize gitHubをクリックします。

認証が完了しました。ターミナルに完了メッセージが表示されます。

Press Enter to open github.com in your browser...
✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as cuavv

参考: https://cli.github.com/manual/

動作確認

以下の条件でリポジトリの一覧を取得してJSONに整形してみます。

  • リポジトリ内で最も使われている言語がTypeScript

JSONに出力するフィールドを指定します。

  • リポジトリ名 (name)
  • リポジトリ内で最も使われている言語 (primaryLanguage)
  • リポジトリ内で使われている全ての言語とそのサイズ (languages)
  • 所有者 (owner)
  • 作成日時 (createdAt)
  • 更新日時 (updatedAt)
Terminal window
% gh repo list --language typescript --json name,primaryLanguage,languages,owner,createdAt,updatedAt
[
{
"createdAt": "2022-06-03T14:21:00Z",
"languages": [
{
"size": 1110,
"node": {
"name": "JavaScript"
}
},
{
"size": 1271,
"node": {
"name": "TypeScript"
}
}
],
"name": "sandbox-cdk-ts",
"owner": {
"id": "MDQ6VXNlcjU3NTM0Mzc0",
"login": "cuavv"
},
"primaryLanguage": {
"name": "TypeScript"
},
"updatedAt": "2022-06-11T16:40:44Z"
},

取得できました👏