GitHub CLI 1.0の主要コマンドのサブコマンド、オプションまとめ
ついにGitHub CLI 1.0
が登場しましたね。🎉
ソースコード、ドキュメントはこちらから
👉https://github.com/cli/cli
👉https://cli.github.com/
GitHub CLIは、go言語製のGitHub公式のCLIツールです。(既存のGitHubのCLIツールとして有名なのはhubらしいですね)
従来はcommitなどの作業はターミナルで行うが、PRの作成などはブラウザを開いて行う必要がありました。
ターミナル→ブラウザ→ターミナル...みたいに頻繁にアプリを切り替える必要があり、個人的にはこのタイミングでコンテキストスイッチによって集中力が途切れがちでした。GitHubを開くためにブラウザ開いたのに、YouTubeのタブが開いていてそのまま...なんてことはよくありますよね...?GitHub CLIを利用すればこの切り替えの手間がなくなり、快適なGitHubライフを送ることができるというわけなんですね。
2020年2月頃にβ版がリリースされていたのですが、2020年9月にβ版が終了してGitHub CLI 1.0
としてリリースされました。
β版では対応していなかったGitHub Enterprise Serverも利用できるようになったみたいですね😊
これをきっかけにGitHubCLIを使ってみようと少し触ってみたので、学んだことを共有します!
今回紹介するのは最低限の環境構築(認証、エディタの設定)とGitHubCLIの主要なコマンド gist
, issue
, pr
, release
, repo
とそのサブコマンド、およびそれらの全フラグですが、その他コマンドalias
やapi
なども随時更新、追加していく予定です。
検証環境
Mac OS X
現在MacOS, Windows, Linuxに対応しています。
install
当方macOSなのでbrewでinstallします。
$ brew install gh
versionを確認
🎉🎉
$ gh --version
gh version 1.0.0 (2020-09-16)
https://github.com/cli/cli/releases/tag/v1.0.0
環境構築
認証
まずはGitHubアカウントの設定を行いましょう。
$ gh auth login
対話形式で設定できるみたいですね。まずはGitHub.com
を利用するかGitHub Enterprise Server
を利用するか選択します。今回はGithub.com
を利用します。
? What account do you want to log into? [Use arrows to move, type to filter]
> GitHub.com
GitHub Enterprise Server
ログインの方法を選択します。今回はブラウザを利用しました。
? How would you like to authenticate? [Use arrows to move, type to filter]
> Login with a web browser
Paste an authentication token
? How would you like to authenticate? Login with a web browser
! First copy your one-time code: 0062-4F62
- Press Enter to open github.com in your browser...
表示されたone-time code
をブラウザに入力してください。
ブラウザの表示に従ってぽちぽちしていきます。
次にプロトコルを選択します。HTTPS
かSSH
を選択します。
✓ Authentication complete. Press Enter to continue...
? Choose default git protocol [Use arrows to move, type to filter]
HTTPS
> SSH
これで認証の設定は完了しました。
? Choose default git protocol SSH
- gh config set -h github.com git_protocol ssh
✓ Configured git protocol
✓ Logged in as JIIOryo
エディタの設定
PRやissueを書く時などのエディタを設定します。今回はvimを設定しました。
$ gh config set editor vim
ちなみに公式ドキュメントによれば現状Windowsでは常にメモ帳らしい。
On Windows, the editor will currently always be Notepad.
コマンド
ghコマンドは、基本的にgh <command> <subcommand> [flags]
で実行します。commandとして利用できるのは、CORE COMMANDS
とADDITIONAL COMMANDS
です。
よく利用するCORE COMMANDS
には以下の5種類があります。
CORE COMMANDS
gist: Create gists
issue: Manage issues
pr: Manage pull requests
release: Manage GitHub releases
repo: Create, clone, fork, and view repositories
例えば、PRやissueを新規作成したい場合はそれぞれ以下のように実行します。
$ gh pr create
$ gh issue create
コマンドの実行は、フラグを指定しない場合はだいたい以下のように対話形式で進めます。
$ gh pr create
? Where should we push the 'feature/hoge' branch? JIIOryo/gh_test
Creating pull request for feature/hoge into master in JIIOryo/gh_test
? Title add HOGE
? Body <Received>
? What's next? Add metadata
? What would you like to add? [Use arrows to move, space to select, <right> to all, <left> to none, type to filter]
[ ] Reviewers
> [x] Assignees
[ ] Labels
[ ] Projects
[ ] Milestone
フラグを指定することでコマンド一発で実行することもできます。
$ gh issue create --title 'foo' --body 'bar' --milestone 'baz'
これらのコマンドの使い方は後ほどそれぞれ説明します。
ADDITIONAL COMMANDS
には以下の6種類があります。
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
今回はとりあえずCORE COMMANDS
だけ紹介します。
随時ADDITIONAL COMMANDS
も追加、更新していく予定です。
ちなみにコマンドによって使えるフラグが異なりますが、だいたいのコマンドで以下のフラグは使用できます。
INHERITED FLAGS
--help Show help for command
-R, --repo OWNER/REPO Select another repository using the OWNER/REPO format
コマンドを忘れて困ったら、とりあえずgh
もしくはgh --help
, gh -h
を叩けば利用できるコマンドの一覧が取得できます。
$ gh repo clone -h
Clone a GitHub repository locally.
If the "OWNER/" portion of the "OWNER/REPO" repository argument is omitted, it
defaults to the name of the authenticating user.
Pass additional 'git clone' flags by listing them after '--'.
USAGE
gh repo clone <repository> [<directory>] [-- <gitflags>...]
INHERITED FLAGS
--help Show help for command
LEARN MORE
Use 'gh <command> <subcommand> --help' for more information about a command.
Read the manual at https://cli.github.com/manual
🍎🍎 gh repoコマンド 🍎🍎
gh repo
コマンドは、リポジトリの作成やclone、forkなどのリポジトリ関連の操作を行うことができます。
gh repo <command> [flags]
で実行し、<command>
には以下の4つが利用できます。
clone: Clone a repository locally
create: Create a new repository
fork: Create a fork of a repository
view: View a repository
🍀🍀 gh repo clone 🍀🍀
gh repo clone
は、リポジトリのcloneを行うことができます。
gh repo clone <repository> [<directory>] [-- <gitflags>...]
で実行します。
例
$ gh repo clone cli/cli
Cloning into 'cli'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 13758 (delta 9), reused 11 (delta 3), pack-reused 13737
Receiving objects: 100% (13758/13758), 32.50 MiB | 4.07 MiB/s, done.
Resolving deltas: 100% (9177/9177), done.
リポジトリの後ろにcloneしたいパスを指定することもできます。
$ gh repo clone cli/cli path/to/repos
Cloning into 'path/to/repos'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 13758 (delta 9), reused 11 (delta 3), pack-reused 13737
Receiving objects: 100% (13758/13758), 32.50 MiB | 3.77 MiB/s, done.
Resolving deltas: 100% (9174/9174), done.
$ ls !$
ls path/to/repos
LICENSE README.md auth command docs go.mod internal script update wix.json
Makefile api cmd context git go.sum pkg test utils
🍀🍀 gh repo create 🍀🍀
gh repo create
は、リポジトリの新規作成を行うことができるコマンドです。
gh repo create [<name>] [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-y | --confirm | 確認なし |
-d | --description | リポジトリの説明を追加 |
--enable-issues | issueを有効にするか(デフォルトtrue) | |
--enable-wiki | wikiを有効にするか(デフォルトtrue) | |
-h | --homepage | ホームページURL |
--internal | リポジトリをinternalで作成するか | |
--private | リポジトリをprivateで作成するか | |
--private | リポジトリをpublicで作成するか | |
-t | --team | アクセスできるorganizationチーム |
-p | --template | テンプレートリポジトリから作成 |
対話形式で作成
fooというリポジトリを作ってみましょう。
以下の質問がされます。
- Visibility(publicなのかprivateなのかとか)どうする?
- currentディレクトリに作って良い?(Noを指定するとリポジトリ作らない。yesならこの時点でGitHub上に作成される)
- ローカルプロジェクトディレクトリをつくる?(Noを指定するとローカルのカレントディレクトリには作られない)
$ gh repo create foo
? Visibility Public
? This will create 'foo' in your current directory. Continue? Yes
✓ Created repository JIIOryo/foo on GitHub
? Create a local project directory for JIIOryo/foo? Yes
Initialized empty Git repository in /path/to/repos/foo/.git/
✓ Initialized repository in './foo/'
ローカルプロジェクトディレクトリを作るを選択すると、ローカルにディレクトリを作成してgit initをしてくれてるっぽい。
https://github.com/cli/cli/blob/b2e36a0979a06b94bf364552a856c166cd415234/pkg/cmd/repo/create/create.go#L291
コマンド一発で作成
例えば、hoge-repo
リポジトリを公開で説明付きで作成したい場合...
$ gh repo create hoge-repo -y -d 'This is description!' --public
✓ Created repository JIIOryo/hoge-repo on GitHub
Initialized empty Git repository in /path/to/repos/hoge-repo/.git/
✓ Initialized repository in './hoge-repo/'
こんな感じにリポジトリが一発で作成されました😲
🍀🍀 gh repo fork 🍀🍀
gh repo fork
コマンドは、リポジトリのforkの新規作成を行うことができます。
gh repo fork [<repository>] [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
--clone | cloneするかどうか | |
--remote | リモートを設定するか |
例
対話形式でforkしてみます。(cloneするかどうか聞かれる)
$ gh repo fork cli/cli
- Forking cli/cli...
✓ Created fork JIIOryo/cli
? Would you like to clone the fork? Yes
Cloning into 'cli'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 13758 (delta 9), reused 11 (delta 3), pack-reused 13737
Receiving objects: 100% (13758/13758), 32.50 MiB | 3.77 MiB/s, done.
Resolving deltas: 100% (9174/9174), done.
Updating upstream
From github.com:cli/cli
* [new branch] auth-check -> upstream/auth-check
* [new branch] branch-switcher -> upstream/branch-switcher
* [new branch] bulk-cmd -> upstream/bulk-cmd
* [new branch] custom-commands -> upstream/custom-commands
* [new branch] debians -> upstream/debians
* [new branch] default-cfg -> upstream/default-cfg
* [new branch] fix-query -> upstream/fix-query
* [new branch] ghe-conditional-request -> upstream/ghe-conditional-request
* [new branch] gist-list -> upstream/gist-list
* [new branch] linux-repos -> upstream/linux-repos
* [new branch] migrate-repo-clone -> upstream/migrate-repo-clone
* [new branch] more-gists -> upstream/more-gists
* [new branch] multi-graphql -> upstream/multi-graphql
* [new branch] pager-docs -> upstream/pager-docs
* [new branch] patch-review-prototype -> upstream/patch-review-prototype
* [new branch] relective-pr-lookup -> upstream/relective-pr-lookup
* [new branch] run-checks -> upstream/run-checks
* [new branch] search-cmd -> upstream/search-cmd
* [new branch] the-newlygit-game -> upstream/the-newlygit-game
* [new branch] trunk -> upstream/trunk
* [new branch] ubuntus -> upstream/ubuntus
* [new branch] web-flag -> upstream/web-flag
✓ Cloned fork
$ ls cli
LICENSE api command git internal test wix.json
Makefile auth context go.mod pkg update
README.md cmd docs go.sum script utils
🍀🍀 gh repo view 🍀🍀
gh repo view
コマンドは、リポジトリのdescriptionとREADMEを参照することができます。
gh repo view [<repository>] [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-w | --web | ブラウザで開く |
例
リポジトリを明示的に指定しなければ現在いるリポジトリのREADMEが表示されます。ちゃんとマークダウンを認識して色が付けられていてとてもみやすいです😊
ただ注意点としては、あくまでGitHub上の情報を参照しているので、ローカルでREADMEを作成、変更しても、pushしないとgh repo view
ではみることができません。
-w
フラグをつけることで、ブラウザを開いて参照することができます。一発でジャンプできて便利。
$ gh repo view cli/cli -w
Opening github.com/cli/cli in your browser.
🍎🍎 gh pr コマンド 🍎🍎
gh pr
コマンドは、プルリクの作成やマージ、ステータスを確認することができます。
gh pr <command> [flags]
で実行し、<command>
には以下の12個が利用できます。
checkout: Check out a pull request in git
checks: Show CI status for a single pull request
close: Close a pull request
create: Create a pull request
diff: View changes in a pull request
list: List and filter pull requests in this repository
merge: Merge a pull request
ready: Mark a pull request as ready for review
reopen: Reopen a pull request
review: Add a review to a pull request
status: Show status of relevant pull requests
view: View a pull request
prコマンドでは、基本的にブランチやPR番号を指定します。
ちなみに何も指定しないとカレントブランチを指定するようです。
https://github.com/cli/cli/blob/b2e36a0979a06b94bf364552a856c166cd415234/pkg/cmd/pr/shared/lookup.go#L34-L37
🍀🍀 gh pr create 🍀🍀
gh pr create
コマンドは、PRを作成することができるコマンドです。
gh pr create [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-a | --assignee | assigneeを指定 |
-B | --base | マージ先ブランチ |
-b | --body | PRのbody(説明) |
-d | --draft | draftでPRを作成 |
-f | --fill | titleとbodyを入力しない。commit情報を使って埋める。 |
-H | --head | PRを作成したいブランチを指定(デフォルトでカレントブランチ) |
-l | --label | ラベルを指定 |
-m | --milestone | マイルストーンを指定 |
-p | --project | プロジェクトを指定 |
-r | --reviewer | reviewerを指定 |
-t | --title | タイトルを指定 |
-w | --web | PR作成画面をブラウザで開く |
対話形式で作成
$ gh pr create
? Where should we push the 'feature/hoge' branch? [Use arrows to move, type to filter]
> JIIOryo/foo
Skip pushing the branch
Cancel
タイトルを入力します。
? Title (add hoge.txt) add HOGE
e
を押すとエディタが開き、PRの文章を記述できます。
? Body [(e) to launch vim, enter to skip]
submitするとPRが作成されます。
? What's next? [Use arrows to move, type to filter]
> Submit
Continue in browser
Add metadata
Cancel
コマンド一発で作成
$ gh pr create -t 'add FUGA' -b '# fugafuga' -m foo -l hoge -B feature/hoge -d
これで一発でこのPRができます。スゴい。
この例では-m
がマイルストーンで、-l
がラベル、-B
がマージ先ブランチ、-d
がドラフトPRです。
ラベルなど、複数ある場合は,
でつなげる。
pushしていない場合は対話形式同様pushする?って聞かれる。
? Where should we push the 'feature/foo' branch? JIIOryo/foo
🍀🍀 gh pr close 🍀🍀
gh pr close
コマンドは、PRをクローズできるコマンドです。
gh pr close {<number> | <url> | <branch>} [flags]
で実行します。
PRの指定方法はbranch
, PR番号
, url
の3種類あります。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-d | --delete-branch | ブランチを削除する |
ブランチ名で指定
これが一番直感的でわかりやすいです。
$ gh pr close feature/fuga
✔ Closed pull request #5 (add FUGA)
PR番号で指定
$ gh pr close 5
✔ Closed pull request #5 (add FUGA)
URLで指定
$ gh pr close https://github.com/JIIOryo/foo/pull/5
✔ Closed pull request #5 (add FUGA)
ブランチも消す
-d
オプションをつけることで、ブランチごと削除することが可能です。これは便利。
$ gh pr close feature/fuga -d
✔ Closed pull request #5 (add FUGA)
✔ Deleted branch feature/fuga and switched to branch master
🍀🍀 gh pr reopen 🍀🍀
gh pr reopen
コマンドは、クローズしたPRを再び開くができます。
gh pr reopen {<number> | <url> | <branch>} [flags]
で実行する。
ReopenするPRを指定方法はbranch
, PR番号
, url
の3種類あります。
PR番号でreopen
$ gh pr reopen 5
✔ Reopened pull request #5 (add FUGA)
URLで指定
$ gh pr reopen https://github.com/JIIOryo/foo/pull/5
✔ Reopened pull request #5 (add FUGA)
ブランチ名で指定
自分の場合ブランチ名で指定してもうまくいかなかったです。
$ gh pr reopen feature/fuga
no open pull requests found for branch "feature/fuga"
🍀🍀 gh pr list 🍀🍀
gh pr list
コマンドは、PRの一覧を表示するコマンドです。
gh pr list [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-a | --assignee | assigneeでフィルタリング |
-B | --base | ベースブランチでフィルタリング |
-l | --label | ラベルでフィルタリング |
-L | --limit | 最大表示個数を指定(デフォルト30) |
-s | --state | 状態を指定 open ,closed ,merged ,all が指定可能 (デフォルトopen ) |
-w | --web | ブラウザでPR一覧のページを開く |
例
$ gh pr list
Showing 4 of 4 open pull requests in JIIOryo/foo
#13 add fugahoge feature/fugahoge
#9 add hogefuga feature/hogefuga
#6 add FOO feature/foo
#1 add HOGE feature/hoge
$ gh pr list -B master -l hoge -L 3
Showing 1 of 1 pull request in JIIOryo/foo that matches your search
#1 add HOGE feature/hoge
🍀🍀 gh pr diff 🍀🍀
gh pr diff
コマンドは、PRのdiffを確認することができるコマンドです。
gh pr diff [<number> | <url> | <branch>] [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
--color | 色。always , never , auto のうちいずれかを選択。(デフォルトauto ) |
例
diffに関してはブラウザの方がわかりやすいので、これで-w
フラグが利用できたら便利なんですけどね。
🍀🍀 gh pr merge 🍀🍀
gh pr merge
コマンドは、PRをマージすることができます。
gh pr merge [<number> | <url> | <branch>] [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-d | --delete-branch | ブランチを削除するか(デフォルト true) |
-m | --merge | マージコミットを作成 |
-r | --rebase | リベース |
-s | --squash | スカッシュマージ |
対話形式で試す
mergeは、マージコミットを作成、リベース、スカッシュマージの3種類が利用できます。
$ gh pr merge
? What merge method would you like to use? [Use arrows to move, type to filter]
> Create a merge commit
Rebase and merge
Squash and merge
ブランチを削除するか聞かれます。
? Delete the branch locally and on GitHub? (Y/n)
Done
✔ Merged pull request #7 (add baz)
✔ Deleted branch feature/baz and switched to branch master
コマンド一発でマージする
$ gh pr merge --squash feature/piyo
✔ Squashed and merged pull request #8 (add piyo)
✔ Deleted branch feature/piyo and switched to branch master
🍀🍀 gh pr ready 🍀🍀
gh pr ready
コマンドは、draftPRをreview可能状態に変更するコマンドです。
gh pr ready [<number> | <url> | <branch>] [flags]
で実行する。
例
最初はドラフト状態(グレーの状態)です。
gh pr ready
してみます。
ReopenするPRを指定方法はbranch
, PR番号
, url
の3種類あります。
指定しない場合はカレントブランチを指定したことになります。
PRのstatusがレビュー可能状態(緑)に変わりました。
🍀🍀 gh pr status 🍀🍀
gh pr status
コマンドは、PRのステータスを確認することができるコマンドです。
gh pr status [flags]
で実行します。
例
draftはグレー、レビュー可能は緑色、Closedは赤に表示されました。
🍀🍀 gh pr review 🍀🍀
gh pr review
コマンドは、レビューをすることができるコマンドです。
gh pr review [<number> | <url> | <branch>] [flags]
で実行します。
PRの指定方法はbranch
, PR番号
, url
の3種類あります。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-a | --approve | PRをapproveする |
-b | --body | レビューのメッセージを指定 |
-c | --comment | PRのコメント (-bが必要) |
-r | --request-changes | 変更依頼 |
対話形式でレビューする
coment
, approve
, request changes
の3つから選ぶことができます。コメントしてみましょう。
$ gh pr review feature/foo
? What kind of review do you want to give? [Use arrows to move, type to filter]
> Comment
Approve
Request changes
e
を押すとエディタが開いてコメントを書くことができます。
? Review body [(e) to launch vim]
確認があるので、submitしましょう。
? Review body <Received>
Got:
hoge
? Submit? (Y/n)
無事にレビューできました。
? Submit? Yes
- Reviewed pull request #6
対話形式でapproveする
approveを選択します。
$ gh pr review feature/foo
? What kind of review do you want to give? [Use arrows to move, type to filter]
Comment
> Approve
Request changes
e
を押すとエディタが開いてコメントを書くことができます。
? Review body [(e) to launch vim, enter to skip]
Approveのときのメッセージが確認できます。Submitしましょう。
? Review body <Received>
Got:
LGTM🎉
? Submit? (Y/n)
コマンド一発でレビューする
-c
はコメント、-a
でapproveすることができます。
これらのメッセージは-b
で指定します。
$ gh pr review feature/foo -c -b 'hoge'
- Reviewed pull request #6
🍀🍀 gh pr checks 🍀🍀
gh pr checks
コマンドは、CIのステータスを取得できるコマンドです。
gh pr checks [flags]
で実行します。
例
$ gh pr checks
All checks were successful
0 failing, 1 successful, and 0 pending checks
✓ ci/circleci: run https://circleci.com/gh/JIIOryo/foo/2...
🍀🍀 gh pr view 🍀🍀
gh pr view
コマンドは、PRのタイトルやbodyの内容などの情報を表示するコマンドです。
gh pr view [<number> | <url> | <branch>] [flags]
で実行します。
PRの指定方法はbranch
, PR番号
, url
の3種類あります。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-w | --web | ブラウザで開く |
例
今回はブランチ名から指定します。
$ gh pr view feature/hogefuga
ブラウザで開く
カレントブランチ(指定なし)のPRをブラウザで開きたいときは-w
フラグを利用します。
$ gh pr view -w
Opening github.com/JIIOryo/foo/pull/9 in your browser.
(ブラウザが開く)
これは便利。使えそう。
🍀🍀 gh pr checkout 🍀🍀
gh pr checkout
コマンドは、指定したPR(ブランチ)にcheckoutするコマンドです。
gh pr checkout {<number> | <url> | <branch>} [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
--recurse-submodules | 再帰的に全てのアクティブなサブモジュールを更新する |
例
$ gh pr checkout feature/hogefuga
Switched to branch 'feature/hogefuga'
Already up to date.
ちなみに実装を見ると、ローカルにブランチがある場合、fetch
checkout
merge
を行い、そうでない場合はcheckout -b
で新しいブランチを作成してくれているようですね。
https://github.com/cli/cli/blob/b2e36a0979a06b94bf364552a856c166cd415234/pkg/cmd/pr/checkout/checkout.go#L118-L133
\
🍎🍎 gh issue コマンド 🍎🍎
gh issue
コマンドは、issueの作成や閲覧することができます。
gh issue <command> [flags]
で実行し、<command>
には以下の6個が利用できます。
close: Close issue
create: Create a new issue
list: List and filter issues in this repository
reopen: Reopen issue
status: Show status of relevant issues
view: View an issue
🍀🍀 gh issue create 🍀🍀
gh issue create
コマンドは、issueを作成することができるコマンドです。
gh issue create [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-a | --assignee | assigneeを指定 |
-b | --body | bodyを指定 |
-l | --label | ラベルを指定 |
-m | --milestone | マイルストーンを指定 |
-p | --project | プロジェクトを指定 |
-t | --title | タイトルを指定 |
-w | --web | ブラウザで開く |
対話形式でissueを作成
まずはタイトルを指定します。
$ gh issue create
Creating issue in JIIOryo/foo
? Title hoge bug 🐛
e
を押すことで、エディタが開きます。
? Body [(e) to launch vim, enter to skip]
入力が完了。
? Body <Received>
? What's next? [Use arrows to move, type to filter]
> Submit
Continue in browser
Add metadata
Cancel
Add metadata
で、assigneeやlabelを指定することができます。移動は上下ボタン、選択はスペースキーです。確定はEnter。
? What would you like to add? [Use arrows to move, space to select, <right> to all, <left> to none, type to filter]
[ ] Assignees
> [x] Labels
[ ] Projects
[ ] Milestone
Labelを選択すると、以下のようにラベル一覧が表示されます。同様に移動は上下ボタン、選択はスペースキーです。確定はEnter。
? Labels [Use arrows to move, space to select, <right> to all, <left> to none, type to filter]
[x] bug
[ ] documentation
[ ] duplicate
> [ ] enhancement
[x] fuga
[ ] good first issue
[ ] help wanted
Submitしましょう。
? What's next? [Use arrows to move, type to filter]
> Submit
Cancel
https://github.com/JIIOryo/foo/issues/11
issueができたみたいなので、みてみます。
コマンドで一発でissueを作成する。
-t
でタイトル、-b
でbody、-l
でラベル、-m
でマイルストーンを選択してみました。
$ gh issue create -t 'fuga bug 🐛' -b 'fugafuga' -l hoge,fuga -m foo
Creating issue in JIIOryo/foo
https://github.com/JIIOryo/foo/issues/12
ちなみに、-w
オプションをつけるとissueを作成する画面がブラウザで開きます。
🍀🍀 gh issue list 🍀🍀
gh issue list
コマンドは、issueの一覧を表示することができます。
gh issue list [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-a | --assignee | assigneeでフィルタリング |
-A | --author | authorでフィルタリング |
-l | --label | ラベルでフィルタリング |
-L | --limit | issueの最大表示件数を指定 (デフォルト30件) |
-m | --milestone | マイルストーンをでフィルタリング |
--mention | メンションでフィルタリング | |
-p | --project | プロジェクトを指定 |
-s | --state | 状態でフィルタリング open ,closed ,all が指定できます。(デフォルトopen ) |
-w | --web | ブラウザで開く |
例
$ gh issue list
Showing 2 of 2 open issues in JIIOryo/foo
#12 fuga bug 🐛 (fuga, hoge) about 5 minutes ago
#11 hoge bug 🐛 (bug, fuga, hoge) about 9 minutes ago
フラグを付けて検索してみます。
$ gh issue list -l hoge,fuga -L 1 -s all
Showing 1 of 2 issues in JIIOryo/foo that match your search
#12 fuga bug 🐛 (fuga, hoge) about 10 minutes ago
🍀🍀 gh issue status 🍀🍀
gh issue status
コマンドは、issueのステータスを表示するコマンドです。
gh issue status [flags]
で実行する。
自分がアサインされたissue, メンションされたissue, 自分が作成したissueを確認することができます。
例
$ gh issue status
Relevant issues in JIIOryo/foo
Issues assigned to you
#12 fuga bug 🐛 (fuga, hoge) less than a minute ago
Issues mentioning you
#12 fuga bug 🐛 (fuga, hoge) less than a minute ago
Issues opened by you
#12 fuga bug 🐛 (fuga, hoge) less than a minute ago
#11 hoge bug 🐛 (bug, fuga, hoge) about 3 hours ago
🍀🍀 gh issue close 🍀🍀
gh issue close
コマンドは、issueをcloseすることができるコマンドです。
gh issue close {<number> | <url>} [flags]
で実行する。
issueを選択する方法は、issue番号
, issueのURL
の2つがあります。
例
$ gh issue close 12
✔ Closed issue #12 (fuga bug 🐛)
$ gh issue close https://github.com/JIIOryo/foo/issues/12
✔ Closed issue #12 (fuga bug 🐛)
🍀🍀 gh issue reopen 🍀🍀
gh issue reopen
コマンドは、closeしたissueを再び開くコマンドです。
gh issue reopen {<number> | <url>} [flags]
で実行します。
issueを選択する方法は、issue番号
, issueのURL
の2つがあります。
$ gh issue reopen 12
✔ Reopened issue #12 (fuga bug 🐛)
$ gh issue reopen https://github.com/JIIOryo/foo/issues/12
✔ Reopened issue #12 (fuga bug 🐛)
🍀🍀 gh issue view 🍀🍀
gh issue view
コマンドは、issueを閲覧することができるコマンドです。
gh issue view {<number> | <url>} [flags]
で実行する。
issueを選択する方法は、issue番号
, issueのURL
の2つがあります。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-w | --web | ブラウザで開く |
例
$ gh issue view 11
$ gh issue view https://github.com/JIIOryo/foo/issues/11
markdownがしっかり認識されて色付けされていてみやすいですが、ブラウザでしっかり確認したい場合もあります。
そのような場合は-w
オプションを利用します。
$ gh issue view 11 -w
Opening github.com/JIIOryo/foo/issues/11 in your browser.
🍎🍎 gh release コマンド 🍎🍎
gh release
コマンドは、releaseの作成や削除ができるコマンドです。
gh release <command> [flags]
で実行し、<command>
には以下の6個が利用できます。
create: Create a new release
delete: Delete a release
download: Download release assets
list: List releases in a repository
upload: Upload assets to a release
view: View information about a release
🍀🍀 gh release create 🍀🍀
gh release create
コマンドは、releaseを作成することができるコマンドです。
gh release create <tag> [<files>...] [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-d | --draft | ドラフトのリリースを作成 |
-n | --notes | Release notesを作成 |
-F | --notes-file | Release notesをファイルから指定して作成 |
-p | --prerelease | prerelease(不安定なバージョン)であることを知らせます。 |
-t | --title | リリースのタイトルを指定します。 |
対話形式でreleaseを作成
releaseを対話形式で作成してみます。まずはタイトルを入力。
$ gh release create v0.0.1
? Title (optional) hoge
Release noteを書くか選択します。
今回はWrite my own
を選択します。
? Release notes [Use arrows to move, type to filter]
> Write my own
Leave blank
prereleaseかどうか聞かれます。今回はyにします。
? Is this a prerelease? (y/N)
releaseをpublishするか、draftとして保存するかなどを選択できます。
今回はpublishします。
? Submit? [Use arrows to move, type to filter]
> Publish release
Save as draft
Cancel
以上で完了です。
出力されたURLを開いてみると、v0.0.1のタグでリリースを作成することができました。
🍀🍀 gh release list 🍀🍀
gh release list
コマンドは、リリース一覧を表示するコマンドです。
gh release list [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-L | --limit | 一度に取得する上限数(デフォルト30) |
例
以下で実行してみます。
$ gh release list
このように、releaseの一覧が取得できました。
🍀🍀 gh release upload 🍀🍀
gh release upload
コマンドは、releaseのassetsをアップロードすることができるコマンドです。
gh release upload <tag> <files>... [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
--clobber | 同名のassetsを上書きするか |
例
試しに、v0.4.0にfoo.txt
,bar.txt
を追加してみましょう。
$ gh release upload v0.4.0 foo.txt bar.txt
Successfully uploaded 2 assets to v0.4.0
ちなみに、同じ名前のassetsがすでにuploadされている場合は怒られます。
$ gh release upload v0.4.0 foo.txt
asset under the same name already exists: [foo.txt]
--clobber
フラグを付ければ上書きできます。
$ gh release upload v0.4.0 foo.txt --clobber
Successfully uploaded 1 asset to v0.4.0
🍀🍀 gh release download 🍀🍀
gh release download
コマンドは、releaseのassetsをダウンロードすることができるコマンドです。
gh release download [<tag>] [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-D | --dir | ダウンロードする先のディレクトリ(デフォルトで. ) |
-p | --pattern | 特定のglobパターンにマッチするassetsをダウンロード |
例
ダウンロード先はデフォルトでカレントディレクトリです。
$ gh release download v0.4.0
-D
フラグでダウンロード先の指定、-p
フラグでglobのパターンを指定することができます。
$ gh release download v0.4.0 -D ~/Desktop/ -p '*.txt'
🍀🍀 gh release delete 🍀🍀
gh release delete
コマンドは、releaseを削除することができるコマンドです。
gh release delete <tag> [flags]
で実行します。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-y | --yes | 削除の確認をスキップ |
例
例えば、現在以下のようなreleaseがあり、v0.0.2
のリリースを削除してみます。
$ gh release list
foo Latest (v0.4.0) about 16 minutes ago
foo (v0.3.0) about 26 minutes ago
add fuga Draft (v0.0.2) about 46 minutes ago
foo Pre-release (v0.2.0) about 34 minutes ago
fuga (v0.1.0) about 37 minutes ago
hoge Pre-release (v0.0.1) about 50 minutes ago
リリースを削除してもいいか質問されるのでyを選択。
$ gh release delete v0.0.2
? Delete release v0.0.2 in JIIOryo/foo? (Y/n) y
✓ Deleted release v0.0.2
ちなみに、-y
オプションを選択することで確認なしで削除できる。
$ gh release delete v0.0.2 -y
🍀🍀 gh release view 🍀🍀
gh release view
コマンドは、releaseの情報を閲覧することができるコマンドです。
gh release view [<tag>] [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-w | --web | ブラウザで開く |
例
少しターミナルではみづらいと言う場合は、-w
フラグを付けてブラウザで開くと良いでしょう。
$ gh release view v0.4.0 -w
🍎🍎 gh gist コマンド 🍎🍎
gh gist
コマンドは、gistの作成や削除などができるコマンドです。
gh gist <command> [flags]
で実行し、<command>
には以下の4個が利用できます。
create: Create a new gist
edit: Edit one of your gists
list: List your gists
view: View a gist
🍀🍀 gh gist create 🍀🍀
gh gist create
コマンドは、gistを新規作成することができるコマンドです。
gh gist create [<filename>... | -] [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-d | --desc | gistの説明を指定 |
-f | --filename | ファイル名を指定 (標準入力から指定する場合) |
-p | --public | gistを公開する (デフォルトprivate) |
例
このようにファイル名を指定する方法を一番使うかと思います。
$ gh gist create hogefuga.txt
- Creating gist hogefuga.txt
✓ Created gist hogefuga.txt
https://gist.github.com/d09d42c7ef0643c432129f7085ffde9d
標準入力から内容を指定する場合、--filename
でファイル名を指定することができる。
$ echo hogehoge | gh gist create --filename hoge.txt
- Creating gist hoge.txt
✓ Created gist hoge.txt
もしくは、-
を利用する。書き終わったらCtrl+Dで抜けることができる。
$ gh gist create - --filename hoge.js
const hoge = 'hoge';
console.log(hoge);
- Creating gist hoge.js
✓ Created gist hoge.js
🍀🍀 gh gist list 🍀🍀
gh gist list
コマンドは、gistの一覧を取得できるコマンドです。
gh gist list [flags]
で実行する。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-L | --limit | 表示最大件数を指定する(デフォルト 10) |
--public | publicのgistを表示する | |
--secret | secretのgistを表示する |
例
$ gh gist list
f6b19a5e7516b0bbadcba6e3b8732e62 hoge.js 1 file secret about 12 min...
08b23d0bc86a40cc74a7b2249259c7f8 1 file secret about 13 min...
1a564f0f1c176a7de2fff7738adc187c 1 file secret about 15 min...
c722167d04f9aa8528255f7db0f84e7f hoge.txt 1 file secret about 17 min...
d09d42c7ef0643c432129f7085ffde9d hogefuga.txt 1 file secret about 23 min...
8170566345795f3d330cef2fff57609e hoge.txt 1 file secret about 19 hou...
🍀🍀 gh gist edit 🍀🍀
gh gist edit
コマンドは、自分のgistを編集することができるコマンドです。
gh gist edit {<gist ID> | <gist URL>} [flags]
で実行する。
あらかじめgh gist list
などでIDを調べる必要があります。もしくはgistのURLでも指定することができます。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-f | --filename | ファイル名 |
例
以下を実行すると、エディタが開いて編集することができます。
$ gh gist edit f6b19a5e7516b0bbadcba6e3b8732e62
複数ファイルから構成されるgistの場合は、editするファイルを選択します。
$ gh gist edit d7f1cc09968c1064f42dfb92181ee983
? Edit which file? [Use arrows to move, type to filter]
> bar.txt
hogefuga.js
hogefuga.txt
他のファイルも編集する場合はEdit another file
を選択します。終了したらSubmit
する。
? What next? [Use arrows to move, type to filter]
> Edit another file
Submit
Cancel
ちなみに--filename
フラグを利用して特定のファイルを指定することができます。
$ gh gist edit d7f1cc09968c1064f42dfb92181ee983 --filename hogefuga.txt
🍀🍀 gh gist view 🍀🍀
gh gist view
コマンドは、gistを閲覧するコマンドです。
gh gist view {<gist id> | <gist url>} [flags]
で実行する。
あらかじめgh gist list
などでIDを調べる必要があります。もしくはgistのURLでも指定することができます。
フラグ
以下のフラグが利用できます。
flags short | flags long | 説明 |
---|---|---|
-f | --filename | ファイル名を指定 |
-r | --raw | markdownをレンダリングしない |
-w | --web | ブラウザで開く |
例
これは、複数のファイルから構成されているケースです。
$ gh gist view d7f1cc09968c1064f42dfb92181ee983
bar.txt
bar
hogefuga.js
const hoge = 'hoge';
const fuga = 'fuga';
console.log(hoge, fuga);
hogefuga.txt
foo
bar
baz
指定したgistが複数のファイルから構成されている場合は特定のファイルのみを指定することもできます。
$ gh gist view d7f1cc09968c1064f42dfb92181ee983 --filename hogefuga.js
const hoge = 'hoge';
const fuga = 'fuga';
console.log(hoge, fuga);
最後に
GitHub CLIコマンドいかがだったでしょうか。
個人的には、さすがにPRのレビューなどをターミナル完結で行うのは厳しそうなので、どれも(issueやPRなど)listで一覧をみて探す→-wでブラウザで開くってのが使いやすそうだと思いました。
まだ紹介していないその他コマンドalias
やapi
なども随時更新、追加していく予定です!
当方まだGitHub CLIに精通していなくて基本的なコマンドしか紹介できませんでしたが、今後慣れてきたら便利なテクニックなどご紹介できればと思います!
もし記事に間違いや補足などあれば教えていただけると助かります🙏
最後まで読んでいただきありがとうございました。😊