GitHub を CLI で使う時の便利コマンド Hub コマンド の使い方をまとめてみた！

# GitHub を CLI で使う時の便利コマンド Hub コマンド の使い方をまとめてみた。
## はじめに
こんにちは、たじまです。
会津大学アドベントカレンダー2018 12日目です。
初めてのアドカレなので穴開けないようにめちゃめちゃ調べたりコマンド打ってます。

本記事では`git` を `CLI` で使う際の便利コマンド、`hub` コマンドについて紹介します。使って見ようと思ったのですが、マイナーバージョンアップに伴った記事が少なかったので、調べるついでにまとめてみました。( 間違い、訂正を見つけたら教えてください!!! )

インストール方法やその後のエイリアスなどなどは [本家GitHub](https://github.com/github/hub) や紹介記事などを参考にしてください！

## 環境
 - `hub` : 2.6.0
 - `git` : 2.16.3

## hub コマンドとは
`hub` コマンドは、[GitHub](https://github.com/github) が提供してる CLI ツールです、 `git` コマンドを拡張し、GitHub 特有の機能にアクセスできるようにします。

**プルリクエストの作成** や、**ブラウザでリポジトリページを開く** など GitHub ユーザにはたまらない便利機能もりもりです。

`git` で `alias` していることが推奨されています。しかし、本記事では `git` 本来のコマンドと区別するために、`hub` と始めるものとします。
詳しい設定方法は [github/hub](https://github.com/github/hub) など調べてみてください！

## 使用する前に注意
`hub` コマンドは、開発が活発的(?)であり、**マイナーバージョンの違いによって挙動が違ったり**、`git` の新機能に `hub` が追いついていないことがあります。また `hub --help` には存在するけど**実装されてないコマンド**がいくつかあります。

本記事で紹介するコマンドも使えないことがあるかもしれないので、その都度調べたり公式のREADMEを参照してください。


## 便利おすすめコマンド
hub コマンドの中でもよく使う & 便利なものをピックアップして解説していきます。


### - hub create

```
$ hub create [repository name]
```
GitHub でリポジトリをつくり、それをローカルの `origin` に追加します。

| オプション | 説明 |
|----|---|
| `-h` | GitHubの新しく作ったプロジェクトページを指定することができます。 |
| `-d` | リポジトリの概要（上の方に一行で出ているやつ）を指定します。 |
| `-p` | プライベートリポジトリとして作成します。 |
| `-o` | GitHubのリポジトリ作成後、ブラウザでリポジトリのページを開きます。 |
| `-c` | 標準出力に出力するリポジトリURLをクリップボードにコピーします。|

ディレクトリを作成して、ディレクトリ名でリポジトリを作成する例です。

```
$ mkdir hoge1; cd hoge1
$ git init; git create  -d 'A sample repository' -h 'https://example.com'
Initialized empty Git repository in /Users/yousan/tmp/hoge1/.git/
Updating origin
https://github.com/yousan/hoge1
```

`-d`と`-h`は下記のように設定されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/47327/6c049c6e-d0e4-09f3-26c6-d2304cafe4dd.png)


### - hub browse
```
$ hub browse [username]/[repository name]
```
指定したリポジトリをブラウザで開いてくれます。自分のリポジトリを開く時は `username` は必要いりません！
またgit管理下で `origin` を設定しているとリポジトリ名もいりません。

### - hub clone
```
$ hub clone [username]/[repository name]
```
`git clone https://github.com/github/hub` と同じことを、`hub clone github/hub` だけでクローンしてくることができます！便利！

### - hub fork
```
$ hub fork
``` 
これはいつもブラウザで[fork]ボタンを押しているのをCLIで完結できます。
`hub clone [usename]/[repository name]` -> `hub fork` とするだけで、フォークができます！

### -hub issue
issue周りのコマンドです！

```
$ hub issue
```
任意のリポジトリ下で実行すると、現在Openなissueが一覧で表示されます。

<img width="854" alt="スクリーンショット 2018-12-11 14.57.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/242889/6448c2e4-8488-85b8-27ad-0b3eb13c257a.png">

こんなかんじです。ラベルに色がついてて綺麗ですね。
ちなみに `hub` コマンドには今(2018/12/11)現在Openなissuesが196個あります。
まだまだ便利になっていきそうです。


```
$ hub issue show [issue number]
```
先ほどのコマンドのオプションです。
issue の番号を指定して、その中身を見ることができます。

```
$ hub issue create
```
任意のリポジトリ下で、issueを作ることができます。


 + `-l` issue にラベルをつけることができます。
 + `-a` Assigneesを指定できます。複数人のときはカンマ `,` 区切りにします。

### - hub pull-request

```
$ hub pull-request
```
任意のリポジトリの任意のブランチでブラウザに移動しなくてもプルリクエスト( PR )を送ることができます。
コマンド実行の後、テキストエディタが立ち上がりそこでメッセージをかけます。
`git commit` -> `git push` -> `hub pull-request` これだけでPR！

### - hub pr
現在開いているPR関係です

```
$ hub pr list
```
PR のリストを表示できます。

```
$ hub pr checkout [PR number]
```
PR の番号を指定することでその PR のブランチへ行けます。
チーム開発だとこれなかなか便利！

## まとめ
この記事の情報集めのために `--help` オプションにはとても助けられました、みなさんも使ってみてください。
私は個人開発ばかりですが、チーム開発で `hub` を使うとまた違った便利さがあると思うので、今後もっと体験していきたいです！

## 参考
`hub --help`
[github/hub](https://github.com/github/hub)
[GitHub のコマンドラインツール「hub」の基本と便利な使い方のまとめ](https://dev.classmethod.jp/tool/git/hub/)
[GitHubユーザーのためのhubコマンド](https://qiita.com/yaotti/items/a4a7f3f9a38d7d3415e3)
[GitHubのコマンドラインツール hub でプルリクエストを効率よく作る](https://qiita.com/yasuhiroki/items/b4bad5366291654440ee)