Github CLI使ってみた[コマンド一覧]

# 前書き
最近出てきたCLIでGithubが扱えるソフトウェア[Github CLI](https://cli.github.com/)を使ってみました。  
いままでたくさんCLIツールはでていたのですが
https://qiita.com/ryuichi1208/items/45fd2cdd865097a7ad3d
公式出のツールは２つめ？っぽいです。(hubが最初？)

**この記事ではプルリクエストをPRと表記するときがあります**
**コマンド→解説の構成です**
## この記事でやっていること
* Github CLIのコマンドの挙動網羅

## この記事でやらないこと
* GithubCLIのインストール法の解説(公式に書いてあります)
* 既存のCLIソフトウェア(hub等)との比較

# 記事本体

## GithubCLIで現在できること
* PRの作成
* PRの一覧表示
* PRのステータス表示
* PRのページをブラウザで開く
* PR対象ブランチへのチェックアウト
* issueの作成
* issueの一覧表示
* issueのステータス表示
* issueのページをブラウザで開く

今回全部試してみたので書いていきます。

## プルリクエストの操作
### PRの作成
Github CLIのプルリクエスト関連操作をまとめています

```
$gh pr create
> Creating pull request for ブランチ名 into [Base Branch名] in ユーザー名/リポジトリ名

```

現在のGitブランチを認識し、そのブランチからBase branch(github側で設定)へのPRとして作成されます

```
$gh pr create

Creating pull request for ブランチ名 into [Base Branch名] in ユーザー名/リポジトリ名

? Title READMEの開発項目のissue移行に際してのREADME修正
? Body [(e) to launch nano, enter to skip]
```

eキーを押すとnanoエディタが開き、本文部分の**Markdown記法での**入力が可能です。
(ちなみにnanoエディタは書き終わったらCtrl + Oで保存→Enter(本来はここでファイル名を入力.Github CLIは勝手にやるので触らないのが吉？)→Ctrl + Xで閉じる)です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448316/3cb24dcb-45a8-ba80-2d6e-ebcbbb5d4703.png)
**2019/02/18追記**
**PRのテンプレート(PULL_REQUEST_TEMPLATE.md)とかあると自動で読み込んでくれます！**

```
$ gh pr create

Creating pull request for ブランチ名 into [Base Branch名] in ユーザー名/リポジトリ名

? Title fff
? Body <Received>
? What's next?  [Use arrows to move, type to filter]
> Preview in browser
  Submit
  Cancel
```
Preview in blowserを選ぶと、Submit前のPRページに飛んでプレビューできます(ラベルとかレビュワーはここで設定する)  
Submitはプレビューせずにそのまま送信される
### PRの一覧表示
```
gh pr list
```
で可能。**現在出ているPRを、そのブランチと一緒にリスティングされる**
### PRのステータス表示
```
gh pr status

/*以下出力*/
Relevant pull requests in YaCpotato/project_manager

Current branch
  #17  READMEの開発項目の移行に際してのRE... [update/readme]

Created by you
  #17  READMEの開発項目の移行に際してのRE... [update/readme]

Requesting a code review from you
  You have no pull requests to review
```
現在のブランチと、PRが出ていたらそれも出してくれる。あとは
* 他ブランチの自分が作ったPR
* コードレビューをリクエストされたPR
の3種類が見れる
### PRのページをブラウザで開く
```
gh pr view [PR番号(#12みたいな数字)]
gh pr view #17
```
このコマンドを打つと対象PRをブラウザで開いてくれる
### PR対象ブランチへのチェックアウト
```
gh pr checkout [PR番号(#12みたいな数字)]
gh pr checkout #17
```
そのPRが出されているブランチにチェックアウトする。
## issueの操作
Github CLIのissue関連操作をまとめています
### issueの作成
```
gh issue create
/*以下出力*/
Creating issue in YaCpotato/project_manager

? Title カレンダーインポートモーダルの実装
? Body <Received>
? What's next?  [Use arrows to move, type to filter]
  Preview in browser
> Submit
  Cancel

```
ほぼPRのcreateコマンドと一緒
### issueの一覧表示
```
gh issue list
/*以下出力*/
Issues for ユーザー名/リポジトリ名

#16  ガントチャートのレイアウトをガ?...                                
#15  イメージ画像をアップロードでき?...                                
#14  カレンダーインポートモーダルの?...                                
#13  共有カレンダーテンプレートの実装                                   
#12  ログイン済みGoogleアカウントから?...                            

```
こちらは特にPRのような種類わけはない模様
### issueのステータス表示
```
gh issue status
/*以下出力*/
Relevant issues in ユーザー名/リポジトリ名

Issues assigned to you
  #15 イメージ画像をアップロードできるようにする about 40 minutes ago

Issues mentioning you
  #16 ガントチャートのレイアウトをガチる about 41 minutes ago

Issues opened by you
  #15 イメージ画像をアップロードできるようにする about 40 minutes ago
  #16 ガントチャートのレイアウトをガチる about 41 minutes ago
  #14 カレンダーインポートモーダルの実装 about 53 minutes ago
  #13 共有カレンダーテンプレートの実装 about 57 minutes ago
  #12 ログイン済みGoogleアカウントからのカレンダー取得 about 59 minutes ago
```

* アサインされているissue
* メンションされているissue
* 自分が開いたissue
の3種類に分かれてリスト表示されます。

### issueのページをブラウザで開く
```
gh issue view [issue番号]
```
PR版とほぼ同じ。対象issueをブラウザで開く

# 最後に
個人的に便利！と思った点は
**`gh pr checkout` でPRが出されているブランチにチェックアウトできること**
PRページからブランチ名コピーしてチェックアウトするのめんどくさいので
**`gh pr statusもしくは　list`からの`gh pr view PR番号`**
上記とPRのレビュー時にすぐにブラウザに飛べる


当方Github用のCLIは初めてだったので既存のものと比較ができなくて残念です。この記事がどなたかの比較の際の参考になれば幸いです。

終わります。
よかったら[Twitter](https://twitter.com/Yasshieeee)フォローしてください