GitHub | Command Line で GitHub を操作する hub の基礎

## :musical_score: 概要
Command Line で GitHub を操作する hub の基礎

## :question: hub とは？
git コマンドに GitHub とのやり取りを便利にするコマンドを追加します。
これにより、GitHub を利用した開発の効率があがります。

## <i class="fa fa-image" style="font-size:1em;"></i> Images
### :baby_chick: Before
:turtle::point_right:<i class="fa fa-terminal" style="font-size:1em;"></i><i class="fa fa-git" style="font-size:1em;"></i>
:walking:
:walking:
:walking:
:turtle::point_right:<i class="fa fa-desktop" style="font-size:1em;"></i>:octocat:
:walking:
:walking:
:walking:
:turtle::point_right:<i class="fa fa-terminal" style="font-size:1em;"></i><i class="fa fa-git" style="font-size:1em;"></i>

### :chicken: After
:rabbit::point_right:<i class="fa fa-terminal" style="font-size:1em;"></i><i class="fa fa-git" style="font-size:1em;"></i>:octocat:
:rabbit::point_right:<i class="fa fa-terminal" style="font-size:1em;"></i><i class="fa fa-git" style="font-size:1em;"></i>:octocat:

## <i class="fa fa-cloud-download" style="font-size:1em;"></i> Installation
バイナリをダウンロードして、パスが通った場所に配置します。

<i class="fa fa-external-link" style="font-size:1em;"></i> [hub 2.2.0-rc1](https://github.com/github/hub/releases/tag/v2.2.0-rc1)

### <i class="fa fa-check-square" style="font-size:1em;"></i> Confirm Installation
機能の確認がてら、 help command で動作確認をします。

~~~bash
$ hub help | tail -12

GitHub Commands:
   pull-request   Open a pull request on GitHub
   fork           Make a fork of a remote repository on GitHub and add as remote
   create         Create this repository on GitHub and add GitHub as origin
   browse         Open a GitHub page in the default browser
   compare        Open a compare page on GitHub
   release        List or create releases (beta)
   issue          List or create issues (beta)
   ci-status      Show the CI status of a commit

See 'git help <command>' for more information on a specific command.
~~~

## <i class="fa fa-gears" style="font-size:1em;"></i> Settings
### <i class="fa fa-gear" style="font-size:1em;"></i> alias の追加
hub を利用する際は、 alias によって git command として扱います。
これにより、 git command は今まで通り利用しつつ、
hub の機能を追加することができます。

.bashrc などに下記設定を追加します。

~~~bash
eval "$(hub alias -s)"
~~~

* git command を呼び出して、 hub の機能が追加されたことを確認します

~~~bash
$ . ~/.bashrc
$ git help | tail -12

GitHub Commands:
   pull-request   Open a pull request on GitHub
   fork           Make a fork of a remote repository on GitHub and add as remote
   create         Create this repository on GitHub and add GitHub as origin
   browse         Open a GitHub page in the default browser
   compare        Open a compare page on GitHub
   release        List or create releases (beta)
   issue          List or create issues (beta)
   ci-status      Show the CI status of a commit

See 'git help <command>' for more information on a specific command.
~~~

### <i class="fa fa-gear" style="font-size:1em;"></i> サブコマンドの入力補完を設定
bash, zsh の入力補完がサポートされています。
bash の場合は、下記を .bashrc に設定します。

~~~
$ wget -O ~/.hub.bash_completion.sh https://raw.githubusercontent.com/github/hub/master/etc/hub.bash_completion.sh
~~~

これで、git / hub のコマンドを補完可能になりました。

## <i class="fa fa-image" style="font-size:1em;"></i> デモ
私の自作 gem である [tbpgr_utils](https://github.com/tbpgr/tbpgr_utils) の Issue を取得してみます。[^1]
`git i` 後に、タブを入力してコード補完を呼び出していることを確認できます。

![hub_issue.gif](https://qiita-image-store.s3.amazonaws.com/0/43480/f8d97c79-42b8-01a8-def7-53c5fabbe869.gif)

## :books: 脚注
[^1]: tbpgr_utils は実用 gem ではない