Macにhubをインストールして使えるようにするまでの手順

## 既にインストールされているかを確認したい場合
以下コマンドでバージョンが確認できます。

```sh
$hub --version
```
## インストールする
以下を実行してインストールします。

```sh
$brew install hub
```
## インストール後の設定

Macにhubコマンドのエイリアスを張ります。

```sh
$cd $HOME
$vim .bashrc
```
エディタが開かれたら、以下を追記します。

```
eval "$(hub alias -s)"
```

## 2ファクタ認証を通るように準備
方法は2通りあります。自分で設定する方法と、自動で作成する方法です。

### 自動で設定する方法
修正内容をadd, commitしたあとに、以下コマンドを打ちます。

```sh
$ hub pull-request
```

username, passwordを入力し、2ファクタ認証のコードを入力します。

```sh
github.com username: hogehoge
github.com password for hogehoge (never stored): 
two-factor authentication code: ****
```

自動でファイルが作成されました。

```sh
$ ls -la ~/.config/hub 
-rw-------  1 hogehoge  staff  112 11  9 14:26 /Users/hogehoge/.config/hub
```

### 手動で設定する方法
使用するGitアカウントの Settings > Developer settings > Personal access tokens を開きます。

[Generate new token]を押下
![スクリーンショット 2020-11-09 13.06.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831027/dc64d733-7f2e-296d-f922-98007edd3ffe.png)

『Note』にわかりやすいよう説明を入力します。
![スクリーンショット 2020-11-09 13.08.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831027/2eda45d9-d04d-c8ca-2e40-f9be87e9552c.png)

Scopeは何もチェックしなくても作成することができます。

[Generate token]を押下
![スクリーンショット 2020-11-09 13.10.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831027/2f9bc05a-ffa7-75de-6738-7bfb5b4041cc.png)

tokenが作成され、表示されるのでコピーします。
![スクリーンショット 2020-11-09 13.11.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/831027/281154a3-d6f3-9cbe-3909-d6869416bb22.png)

`~/.config`配下に`hub`というファイルを作成します。

```sh
$ vim ~/.config/hub
```

エディタが開いたら、以下を入力します。
{UserName}にはGithubアカウントの名前を、{token}には先ほど生成したtokenを入れます。

```
github.com:
- user: {UserName}
  oauth_token: {token}
  protocol: https
```

これで準備は完了です。
以下コマンドを入力し、エディターでPRの概要などを入力すればPRを出すことができます。

```sh
$hub pull-request
```

## トラブルシューティング
### エラー： Bad credentials

▼エラーメッセージ

```sh
$ hub pull-request
Error creating pull request: Unauthorized (HTTP 401)
Bad credentials
```
#### 原因
tokenの値が間違っていた。

#### 解決方法
~/.config/hub のtokenの値が正しいか見直す。
必要があれば、tokenを再作成して試す。

### エラー: Not Found Are you sure that github.com/hoge/hoge exists?

▼エラーメッセージ

```sh
$ hub pull-request
Error creating pull request: Not Found (HTTP 404)
Not Found
Are you sure that github.com/hoge/hoge exists?
```

#### 原因
私の場合は、tokenを作り直して`~/.config/hub`の値を変更し実行したところ、このエラーが出てしまいました。

#### 解決方法
一度`~/.config/hub`を削除し、 #自動で設定する方法 の手順を行ったところ、成功しました。

おそらく、`~/.config/hub`側の設定を変えても、使用されているGITHUB_TOKENの変更ができていなかった為に起きていたものと思われます。
参考：https://github.com/github/hub/issues/878

---
## ちょっとした使い方メモ
### エディターを開かずにコマンド実行だけでPRを出す
シェルスクリプトの中で実行する時など、エディターを開きたくない場合に。

#### 1.テンプレートファイルを作る
PRの概要欄に記載したい内容を、あらかじめテンプレートとして作成しておきます。
内容を変えたい時は、よしなにファイル操作を行えば、バッチ内でいい感じに使えます。（たとえば日付を変えたい時は、sedで変更するなど）

```template.txt
YYYYMMDD_PR_Title

## チケット
CHICKET_URL

## 対応内容
FIX_DETAIL
```

#### 2.hubコマンドのオプションでテンプレートファイルを指定する
```sh
$hub pull-request -F ~/pj/template.txt
https://github.com/hogehoge/fugafuga/pull/9999
```
このようにエディターを開かずPRを作成できます。
また、テンプレートの一行目がPRのタイトルとなります。

### ラベルを指定する
`-l "{ラベル名}"`

```sh
$hub pull-request -F ~/pj/template.txt -l "label_name"
```

### レビュアーを指定する
`-r "{レビュアー名}"`

```sh
$hub pull-request -F ~/pj/template.txt -r "reviewer_name"
```