Git
GitHub
472
どのような問題がありますか?

この記事は最終更新日から1年以上が経過しています。

投稿日

更新日

GitHub CLIで始める快適GitHub生活

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

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

GitHub CLIとは?

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

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

インストール

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

brew install 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 - リポジトリの操作

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

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

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

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

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

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 - イシューの操作

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

# イシューの作成
$ 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の操作

GitHub gistの作成が行えます。

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

api - GitHub 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化"

リポジトリの作成

どのようなコードを書くにせよ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をもっと上手く使えばかなり色々出来そうです。
今後も継続して使っていきたいです。

参考

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ryo2132
Frontend engineer / フルリモートワーク / 元消防士🚒 / 一児の父 / Ruby / Typescript / Vue.js / Firebase

コメント

リンクをコピー
このコメントを報告

@mogya ありがとうございます〜!!!!

たぶん誤字 by mogya 2020/08/14 06:43

0
リンクをコピー
このコメントを報告

@donchan922 修正ありがとうございます!!!

タイポ by donchan922 2020/08/14 06:47

1
(編集済み)
リンクをコピー
このコメントを報告

めちゃくちゃ有用な記事をありがとうございました!
https://qiita.com/ryo2132/items/2a29dd7b1627af064d7b#%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E4%BD%9C%E6%88%90
ここなのですが、自分以外のレポジトリにも対応できるように自分なりに書いてみましたので紹介させていただきます。

function ghcr
 gh repo create $argv
 ghq get $argv[1]
 code (ghq list --full-path -e $argv[1])
end
3
リンクをコピー
このコメントを報告

@ryoppippi

おおーーー!!!
ありがとうございます!!記事にも反映させて頂きました〜

1
サービス利用規約に基づき、このコメントは削除されました。
リンクをコピー
このコメントを報告

codeはvscodeの事だと思うのですが、$EDITORにしたほうが汎用性が高まるかと思います。

function ghcr
 gh repo create $argv
 ghq get $argv[1]
 $EDITOR (ghq list --full-path -e $argv[1])
end
1
リンクをコピー
このコメントを報告
brew install github/gh/gh

ではなく、

brew install gh

ですね
僕の場合、No available formulaとエラーが出ました。

1
リンクをコピー
このコメントを報告

@kotarofunyu

指摘ありがとうございます。メジャーバージョンが出て変わったみたいですね。
修正しました

1
どのような問題がありますか?
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
472
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー