GitHub CLI (gh)のインストール方法とコマンド(repo/pr)の使い方
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がサブコマンドとして利用できることがわかります。