Help us understand the problem. What is going on with this article?

GitHub CLIで始める快適GitHub生活

最近、GitHub CLIが便利だな〜と思ったので紹介します。

この記事は以下リリース時点の情報です。
Release v0.11.1 · cli/cli

GitHub CLIとは?

コマンドライン上でGitHubの操作を行えるCLIツールです。GitHubが公式で公開しています。

https://github.com/cli/cli

image.png
(参考: GitHub公式ブログ

インストール

Macの場合はbrewでインストールできます。Windowsの場合は公式のREADME.mdを参照してください。

$ brew install github/gh/gh

認証

最初に自分のGitHubアカウントと連携するために認証が必要です。
なんらかのghコマンドを打つと認証を求められるので、案内にしたがって認証を完了してください。

$ gh issue list
Notice: authentication required
Press Enter to open github.com in your browser

コマンド補完の設定

GitHub CLIはコマンドが長いので最初にシェルの補完設定をしておくと便利です。
gh completionで補完関数が表示されるので、お使いのシェルの設定ファイルにevalを記述してください。

fishの場合

config.fish
eval (gh completion -s fish| source)

zshの場合

.zshrc
eval "$(gh completion -s zsh)"

bashの場合

.bashrc
eval "$(gh completion -s bash)"

何が良いの?

そのままですが、ブラウザを開いてマウスカーソルで操作する必要がないのが何より良いです。
新しくリポジトリを作成する時や過去のプルリクエストの検索の際などに、いちいちブラウザを開いて集中力を途切れさせる必要はありません。そのままエディタ、ターミナルと向き合えば良いのです。最高に便利。

以降でコマンド一覧と実際に普段の業務でよく使うコマンドを紹介します。

コマンド一覧

GitHub CLIで使えるコマンド一覧です。
コマンドごとのオプションなど詳細情報は、リンク先のドキュメントを参照してください。

repo - リポジトリの操作

https://cli.github.com/manual/gh_repo

リポジトリの作成、クローン、表示などが行えます。

# リポジトリの作成
$ gh repo create [<name>] [flags]

# リポジトリのクローン
$ gh repo clone <repository> [<directory>] [flags]

# リポジトリのフォーク
$ gh repo fork [<repository>] [flags]

# リポジトリ内容の閲覧
$ gh repo view [<repository>] [flags]

pr - プルリクエストの操作

https://cli.github.com/manual/gh_pr

プルリエクストの作成、マージ、レビューなどが行えます。たぶん一番使うコマンドですね。

# プルリクエストのブランチへのチェックアウト
$ gh pr checkout {<number> | <url> | <branch>} [flags]

# 現在のブランチからのプルリクエストの作成
$ gh pr create [flags]

# プルリクエストのクローズ
$ gh pr close {<number> | <url> | <branch>} [flags]

# プルリクエストの差分を確認
$ gh pr diff {<number> | <url>} [flags]

# プルリクエストの一覧を取得
$ gh pr list [flags]

# プルリクエストをマージ
$ gh pr merge [<number> | <url> | <branch>] [flags]

# プルリクエストにレビューを追加
$ gh pr review [<number> | <url> | <branch>] [flags]

# プルリクエストの内容を閲覧
$ gh pr view [<number> | <url> | <branch>] [flags]

# 自分に関係のあるプルリクエストのステータスを閲覧
$ gh pr status [flags]

# ドラフトのプルリクエストをレビューに変更する
$ gh pr ready [<number> | <url> | <branch>] [flags]

# クローズしたプルリクエストを再度オープンにする
$ gh pr reopen {<number> | <url> | <branch>} [flags]

issue - イシューの操作

https://cli.github.com/manual/gh_issue

イシューの作成や、ステータスの確認などが行えます。

# イシューの作成
$ gh issue create [flags]

# イシューのクローズ
$ gh issue close {<number> | <url> | <branch>} [flags]

# イシューの一覧表示
$ gh issue list [flags]

# イシューの再オープン
$ gh issue list [flags]

# 自分の関連するイシューのステータス確認
$ gh issue status [flags]

# 指定のイシューの閲覧
$ gh issue view {<number> | <url>} [flags]

gist - GitHub Gistの操作

https://cli.github.com/manual/gh_gist

GitHub gistの作成が行えます。

# gistの作成
$ gh gist create [<filename>... | -] [flags]

api - GitHub APIの実行

https://cli.github.com/manual/gh_api

GitHub APIの実行ができます。GraphQLのqueryを手軽に実行できます。

# 自分のリポジトリ一覧の取得
$ gh api graphql --paginate -f query='
  query($endCursor: String) {
    viewer {
      repositories(first: 100, after: $endCursor) {
        nodes { nameWithOwner }
        pageInfo {
          hasNextPage
          endCursor
        }
      }
    }
  }

alias - CLIコマンドのエリアスの登録

GitHub CLIの各コマンドのエイリアスを作成できます。

# エイリアスの登録
$ gh alias set <alias> <expansion> [flags]

# エイリアスの削除
$ gh alias delete <alias> [flags]

# エイリアスの一覧表示
gh alias list [flags]

実際に良く使うコマンド紹介

最後に、実際に使用頻度が高いコマンドを紹介します。

自分の出したプルリクエストの一覧取得

プルリクエストの概要欄に過去の関連プルリクエストを貼りたいときなど、過去のプルリクエストを検索しますよね。GitHub CLIを使えばコマンドライン上でgrep検索できます。

$ gh pr list -s all -a <自分のアカウント名> | grep "検索文字列"

オプションの入力を省くためにaliasを作っておくとなお便利です。

# myprでエイリアスとして登録
$ gh alias set mypr "pr list -s all -a kawamataryo"

# 検索の実行
$ gh mypr | grep "Vue化"

リポジトリの作成

https://cli.github.com/manual/gh_repo_create

どのようなコードを書くにせよGitHubにリポジトリを立ててから書き始めるタイプなので重宝しています。今まではブラウザを開いて、GUIでぽちぽちやる必要があり煩わしかったのですが、GitHub CLIならコマンド1つでリポジトリが作成可能です。

# my-super-programというリポジトリをパブリックで公開
$ gh repo create my-super-program --public -d 'The best library ever!'

私はローカルのリポジトリ管理をghqで行っているので、

  1. リポジトリの作成
  2. ghqでの取得
  3. VSCodeで開く

までの一連の流れを行う関数をfishシェルに登録して使っています。

config.fish
# githubにリポジトリを作り、ghqで取得、vscodeでひらく
function ghcr
 gh repo create $argv
 ghq get git@github.com:kawamataryo/{$argv[1]}.git
 code /Users/kawamataryou/ghq/github.com/kawamataryo/{$argv[1]}
end

ghcrコマンドを使えば、速攻で実装をスタートできます。便利!

$ ghcr my-super-program --public -d 'The best library ever!'

ezgif.com-optimize (11).gif

2020/08/16 追記
@ryoppippi さんが汎用的に使えるように書き直してくれました!!

function ghcr
 gh repo create $argv
 ghq get $argv[1]
 code (ghq list --full-path -e $argv[1])
end

プルリクエストの作成

プルリクエストの作成時も便利です。
通常は、push --set-upstream origin hogehogeとしてブランチをpushして、その後表示されるリンクからプルリクエスト作成画面へ移動という流れかと思います。GitHub CLIを使えばその作業を1つのコマンドで行うことができます。CLI上でプルリクエストのタイトルや概要などの項目を埋めることも可能です。
自分は概要に動作確認の画像の貼り付けなどを行いたいので、いつも-wのオプションを指定してブランチのpush後に自動的にGitHubのプルリクエスト作成画面がブラウザで開くようにしています。

$ gh pr create -w

これもエイリアスに登録しておけば楽です。

# prcとしてエイリアスの登録
$ gh alias set prc "pr create -w"

# プルリクエストの作成
$ gh prc

終わりに

以上「GitHub CLIで始める快適GitHub生活」でした。
今回紹介出来てないんですが、GitHub APIをもっと上手く使えばかなり色々出来そうです。
今後も継続して使っていきたいです。

参考

ryo2132
Frontend engineer / フルリモートワーク / 元消防士🚒 / 一児の父 / Ruby / Typescript / Vue.js / Firebase
admin-guild
「Webサービスの運営に必要なあらゆる知見」を共有できる場として作られた、運営者のためのコミュニティです。
https://admin-guild.slack.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした