GitHub CLI (gh)のインストール方法とコマンド(repo/pr)の使い方

2020年12月18日GitHub

GitHub公式のGitHub CLIツールghのインストール方法とコマンドの使い方をまとめました。

GitHub CLIを利用するとリポジトリの作成やプルリクエストを発行をブラウザではなくターミナルから実行できます。

シェルなどにも組み込むことも出来るため自動化を行ったり、Gitコマンドで操作を行う流れで作業できるのでおすすめです。

GitHub CLI (gh) のインストール方法

Macの場合

brew install gh

または

sudo port install gh

 

Windowsの場合

winget install gh

 

Ubuntuの場合

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
sudo apt-add-repository https://cli.github.com/packages
sudo apt update
sudo apt install gh

GitHub CLI のコマンド補完を設定する

GitHub CLIのコマンド補完機能を設定することで、TABキーで長いコマンド名を補完することが出来ます。

bashの場合

.bashrcファイルに以下のコマンドを追加します。

eval "$(gh completion -s bash)"

 

zshの場合

.zshrcファイルに以下のコマンドを追加します。

eval "$(gh completion -s zsh)"

GitHub CLIでGitHubにログインする

ghコマンドを利用するために自分のGitHubのアカウントにログインします。

以下のコマンドを入力し指示に従って進めます。

gh auth login

GitHub CLI (gh) のコマンドの使い方

私がGitHub CLIコマンドの中でよく使う gh repoと gh prについて紹介します。

 

リモートリポジトリの操作(gh repo)

リモートリポジトリの作成(gh repo create)

ローカルリポジトリを作成した後に、同じ名前でリモートリポジトリを作成する場合

$ mkdir gh-test
$ cd gh-test/
$ git init

$ gh repo create
? Repository name gh-test
? Repository description
? Visibility Private
? This will create 'gh-test' in your current directory. Continue?  Yes
✓ Created repository xxxxx/gh-test on GitHub
✓ Added remote git@github.com:xxxxx/gh-test.git

オプションを何も指定しない場合、対話型でリポジトリの作成を行うことが出来ます。

その場合、カレントディレクトリ名がリモートリポジトリ名の初期値として表示されます。

また、自動的にリモートリポジトリが以下のようにoriginに割り当てられるためgit remote addコマンドを発行する必要がないため便利です。

$ git remote -v
origin  git@github.com:xxxxx/gh-test.git (fetch)
origin  git@github.com:xxxxx/gh-test.git (push)

リモートリポジトリ名などを指定して対話形式で作成しない場合

以下のようにリモートリポジトリ名などを指定することも可能です。

リモートリポジトリ名でディレクトリが作成されローカルリポジトリも構築されます。

$ gh repo create gh-test -d DESCRIPTION --private

リモートリポジトリの情報を表示(gh repo view)

リモートリポジトリを指定するとREADME.mdの内容などが表示されます。

例えば、GitHub CLIのリポジトリの内容を表示する場合は以下のように実行します。

$ gh repo view cli/cli

 

操作中のローカルリポジトリのディレクトリ内でリポジトリ名を指定せずに実行すると対応するリモートリポジトリの情報が表示されます。

$ gh repo view

プルリクエストの操作(gh pr)

プルリクエストの作成(gh pr create)

ブランチ名を指定しない場合、カレントのブランチからデフォルトブランチへのプルリクエストを対話形式で作成します。

$ gh pr create

Creating pull request for develop into master in xxxxx/gh-test

? Title プルリクのタイトル
? Body <Received>
? What's next? Submit
https://github.com/xxxxx/gh-test/pull/1

 

次のように、マージ元のブランチとマージ先のブランチを指定することもできます。

$ gh pr create -H develop -B master

Creating pull request for develop into master in xxxxx/gh-test

? Title プルリクのタイトル
? Body <Received>
? What's next? Submit
https://github.com/xxxxx/gh-test/pull/2

プルリクエストの一覧表示(gh pr list)

$ gh pr list

Showing 1 of 1 open pull request in xxxxx/gh-test

#2  プルリクのタイトル  develop

flagsで表示する対象を絞り込むことができます。

例えば、masterへのマージのみを対象としたい場合は以下のように実行します。

$ gh pr list -B master

プルリクエストのマージ(gh pr merge)

プルリクエストのマージを行う場合は、

まず、対象のプルリクを確認するためにgh pr listで表示し#番号を確認し、その番号を指定してマージを行います。

$ gh pr merge 2

? What merge method would you like to use? Create a merge commit
? Delete the branch locally and on GitHub? No
? Submit? Yes
✔ Merged pull request #2 (プルリクのタイトル)

コンフリクトが発生していなければ、無事マージが行えます。

プルリクエストでコンフリクトが発生した場合の対処方法については、以下の記事にまとめました。

GitHub CLI コマンドの一覧

ghと入力しコマンドラインヘルプを表示してみると、CORE COMMAND/SUB COMMAND/flagsを組み合わせて利用することがわかります。

上記で紹介した以外にも色々とありますので、試して見ましょう。

$ gh
Work seamlessly with GitHub from the command line.

USAGE
  gh <command> <subcommand> [flags]

CORE COMMANDS
  gist:       Manage gists
  issue:      Manage issues
  pr:         Manage pull requests
  release:    Manage GitHub releases
  repo:       Create, clone, fork, and view repositories

ADDITIONAL COMMANDS
  alias:      Create command shortcuts
  api:        Make an authenticated GitHub API request
  auth:       Login, logout, and refresh your authentication
  completion: Generate shell completion scripts
  config:     Manage configuration for gh
  help:       Help about any command
  secret:     Manage GitHub secrets

FLAGS
  --help      Show help for command
  --version   Show gh version

各COREコマンドのヘルプを確認する方法

COREコマンドで利用できるサブコマンドについて調べる方法は以下の通りです。

gh <command> --help

例.リポジトリを扱うrepoコマンドについて調べる場合

$ gh repo --help
Work with GitHub repositories

USAGE
  gh repo <command> [flags]

CORE COMMANDS
  clone:      Clone a repository locally
  create:     Create a new repository
  fork:       Create a fork of a repository
  view:       View a repository

INHERITED FLAGS
  --help   Show help for command

ARGUMENTS
  A repository can be supplied as an argument in any of the following formats:
  - "OWNER/REPO"
  - by URL, e.g. "https://github.com/OWNER/REPO"

EXAMPLES
  $ gh repo create
  $ gh repo clone cli/cli
  $ gh repo view --web

LEARN MORE
  Use 'gh <command> <subcommand> --help' for more information about a command.
  Read the manual at https://cli.github.com/manual

clone、create、fork、viewがサブコマンドとして利用できることがわかります。

GitHub

Posted by snow